![]() |
这个代码架构有问题: 按你的图中TL0=0x40,TH0=0xA2 ,假设主频为12M,在1T时,约为2ms一中断, 再看你图中的中断ISR函数中都有什么: 除了有最基本的计数, 还有JDQ,有LED1、有LED2执行驱动的代码, 还有GET_ADC、OLED_Show、这样本该在中断外执行的函数 还有一大堆的if ( )、有的if ()还是一连串的&&.. 你有没有大约算一下,进中断,完整走完再出来,需花费多少时间? 会不会直接干翻了这个2ms的中断? 这明显是把餐后甜点当主食了,能行吗? 如果你在main()中调用了GET_ADC、OLED_Show等函数,又在中断中调用了同样的函数,很容易出问题的。 你说你注释了中断代码就OK,也说明上述的理论是正确的。 |
代码空间够用,链接脚本有问题? |
看看整个程序有没有重复定义 interrupt 1,别外中断内代码尽量简洁,别执行太大的程序,可以设置状态标志位,把程序放主程序内,通过状态标志位来判断执行现与否,执行后清除标志。 |
空间不够了吧 |
coody_sz 发表于 2025-8-21 22:52 谢谢您的回复,能说详细一点吗,我初学者 ![]() |
地址重叠,看看m51文件吧。 |