[AVR单片机] mega88的bootloader程序怎么退出啊?

[复制链接]
2404|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

粉丝
快速回复 在线客服 返回列表 返回顶部