汇编语言编程对理解CPU的如何工作运行非常有必要。这里用汇编来实现一个定时器中断来闪灯的程序:
我们先算得50ms一次中断的计数器的初值
1、记数值=50 000*12/32=18750
2、初始值=65535-18750=46785 (=B6C1)
3、TH0=B6 TL0=C1
ORG0000HORL0B1H, #0FFH ;P3CON0x1eMOVTMOD,#01H ;定时器方式1MOVTH0, #0B6HMOVTL0, #0C1H ;32.0592HZ晶振,50ms定时MOVTCON,#10H ;将TR0至1MOV0B0H, #0FFH;将P1口LED全部熄灭MOVR6, #20;计数20次LOOP: JNB TF0, LOOP;检测计数是否溢出MOVTH0, #0B6HMOVTL0, #0C1H;溢出后,重新送初值CPLTF0;CPU响应T0中断时,TF0由硬件清0;否则由软件清0(CPL TF0清0操作)DJNZR6,LOOP ;循环20次,50ms,定时1sMOVR6,#20;重新装载20次初值CPL0xB0.1;LED闪烁LJMPLOOPEND
下载到开发板后,LEDP3.1就可以实现1秒钟闪烁一次。
全部0条评论
快来发表一下你的评论吧 !