这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 综合技术 » 基础知识 » mega8 mega8的菜鸟问题,恳请大家帮忙

共2条 1/1 1 跳转至

mega8 mega8的菜鸟问题,恳请大家帮忙

院士
2006-09-17 18:14:16     打赏
mega8 mega8的菜鸟问题,恳请大家帮忙



关键词: mega8     菜鸟     问题     恳请     大家     帮忙    

院士
2006-12-22 22:43:00     打赏
2楼
问 大家好,承蒙大家的帮忙,现在已经能对MEGA8编程了,但是编程后校验通不过,出现-44错误,不过读出来和源程序程序对照,是一样的,现在编了一个小程序练练手,在AVRSTUDIO3.56中模拟执行通过,I/O口电平变化,延时时间都正常,但下载到MEGA8中后运行不正常,不知道是芯片问题,还是程序问题,或者我的电路有问题,电路我接了模拟数字地,模拟数字2个电压,5V,复位端曾用过10K和1UF电容,也用过2K电阻接到RST和VCC端,熔丝位没有动,检查过是默认值。是用内部晶振,1M。

附程序,第一个测试用的,大家千万不要笑:
.include "m8def.inc"
.org $0000
rjmp start
.org $0100
start   :ldi r16,0x02          ;设置堆栈
         out sph,r16
         ldi r16,0xff
         out spl,r16
         ldi r16,0xff          ;定义B口为输出
         out ddrb,r16
         ldi r16,49
xunhuan :cbi portb,0           ;pb0=0,led灭
         call delay            ;延时1s
         sbi portb,0           ;pb0=1,led亮
         call delay            ;延时1s
         rjmp xunhuan
delay   :push r16              ;通用延时子程序,这里约1秒
l0      :push r16
l1      :push r16
l2      :push r16
l3      :dec r16
         brne l3
         pop r16
         dec r16
         brne l2
         pop r16
         dec r16
         brne l1
         pop r16
         dec r16
         brne l0
         pop r16
         ret 1: 試一下看.好像是delay有問題.
delay:
     ldi r18,0x55
delay1:
     dec r0
     brne delay1
     dec r18
     brne delay1
試一下看.
    

2: 为何用汇编,不用c?我刚接触mega8,请指教! 3: 。请问你的
1。“编程后校验通不过,出现-44错误”是啥意思?(我记得没错的话,这是提示程序下载失败!)
2。你确定你的程序下载到了MEGA8了吗?
3。另外你的:
        ldi r16,0x02          ;设置堆栈
         out sph,r16
         ldi r16,0xff
         out spl,r16
   虽不是主要问题(“浪费”了一部分RAM),我建议你采用以下设置:
       ldi r16,low(ramend)
       out spl,r16
       ldi r16,high(ramend)
       out sph,r16
  这样,程序的移植性会好些!
4。我最怀疑的是你的程序没有下载到目标IC上,可能你的目标IC熔丝配置成了外部有源振荡器或者是你的IC加了密!

4: 再补充一问再补充一问:你是怎样把“读出来的数据”和“*.hex”的数据相比较的呢?然后得出“数据一样”这个结论呢? 5: 99%是程序没有下载成功 6: RE:延时具体赋值啊,不用PUSH,POP,这样你都糊涂了!同时检查一下是不是片子一直在复位啊!! 7: 谢谢各位的回答!谢谢各位的回答!

COKE:DELAY程序是双龙书上的通用延时程序,我都是照抄的,检查了N遍,在AVRSTUDIO3。56里调试,在观察窗口里看到的延时时间和书上描述的完全一样。应该不会有错。

康1209:我是把从芯片读出来的数据和源程序的程序逐个字节对照,反正也就30多个字节吗,如果程序没有正确下载到MEGA8,怎么会读出来一样的程序呢?


因为我是绝对的初学者,第一次编程,以前看了好久的书,没有实践过,第一次就碰上这样的事儿,咳,下线以后慢慢查吧,以前自学51也是如此的经历。


谢谢各位,你们费心了! 8: 搞定了,谢谢各位。不好意思,以前用51时,芯片在编程时是自动先擦除,然后再编程的,结果自然而然的就把这个习惯带到了AVR

忘了在编程前先擦除芯片

共2条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]