打印
[AVR单片机]

mega88的bootloader程序怎么退出啊?

[复制链接]
1658|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ant17|  楼主 | 2008-7-24 15:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
mega88的bootloader程序怎么退出啊?
我设置的是这样的
void quit(void) 

uart_putchar('O');uart_putchar('K'); 
uart_putchar(0x0d);uart_putchar(0x0a); 
     while(!(UCSR0A & 0x20));            
     WatchDog();
     TCCR0B = 0;
     MCUCR = 0x01; 
     MCUCR = 0x00;  
     //将中断向量表迁移到应用程序区头部 
asm("LDI R30,0X00\n"
     "LDI R31,0X00\n"    
      "jmp 0x0000\n");                //跳转到Flash的0x0000处,执行用户的应用程序 
 

但总是退不出boot区
我看到mega128的是
     
     RAMPZ = 0x00;                    //RAMPZ清零初始化 
    asm("jmp 0x0000\n"); 
但是mega88没有RAMPZ寄存器
还请各位高手指点,谢谢啦!

相关帖子

沙发
avr| | 2008-7-25 09:07 | 只看该作者

对M88,应该不需要使用RAMZ吧

asm("LDI R30,0X00\n"
     "LDI R31,0X00\n"    
      "jmp 0x0000\n"); 
这段中前两句是无用的,或者第三句用ijmp就可以了。 

使用特权

评论回复
板凳
ant17|  楼主 | 2008-7-25 10:21 | 只看该作者

回2楼

把前两句去掉了,用你的方法试了下,感觉还是退不出boot程序呀!
我在这个语句
asm("jmp 0x0000\n");
前面和后面都加上了测试标志,前面的标志出来了,后面的标志没有出来,但是从总体的程序看还是没有退出boot程序.
请问下还有没有可能是其他的什么问题引起的.

使用特权

评论回复
地板
cheungman| | 2008-7-31 15:59 | 只看该作者

(*((void(*)(void))0))();

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

16

主题

26

帖子

0

粉丝