51汇编学习(四)

1、当t0(p3.4)引脚上发生一个负跳变时,作为p1.0引脚产生方波启动触发信号。则开始从P1.0引脚上输出一个周期为1 ms的方波,如下图所示(假设系统时钟为6MHz)。在这里插入图片描述
 基本思想:T0设置为方式1计数器模式,初值设为FFFFH。当外部计数输入端T0(P3.4)发生一次负跳变时,计数器T0加1且溢出,溢出标志TF0置1,向CPU发出中断请求,此时T0相当于一个负跳沿触发的外部中断源。进入T0中断程序后,把F0标志置1,说明T0引脚上已接收过负跳变信号。T1定义为方式2定时器模式。在T0引脚产生一次负跳变后,启动Tl每500 μs产生一次中断,在中断服务子程序中对P1.0求反,使P1.0产生周期l ms的方波。由于方式2省去了用户程序中重新装入初值的指令,所以可产生精确的定时时间。
在这里插入图片描述
在这里插入图片描述
程序说明:当单片机复位时,从0000H跳向主程序MAIN处执行程序。其中调用了对T0、T1初始化子程序PT0M2。子程序返回后执行标号LOOP处指令,循环等待T0引脚上负脉冲的到来。由于负脉冲到来的标志位F0的复位初始值为0,所以程序就在标号LOOP处循环等待。当T0(P3.4)引脚上发生负跳变时,由于T0计数溢出,则跳向T0中断服务子程序。此时停止T0计数,并把T0引脚接收过负脉冲的标志F0置1。当中断返回时,由于F0已被置1,则程序跳出LOOP处的循环等待。此时执行指令来允许Tl中断,并启动Tl定时,然后执行“AJMPHERE”指令,循环等待,等待Tl的500 μs定时中断到来。当Tl的500 μs定时中断产生时,则进入Tl的中断服务子程序ITIP,把P1.0脚上的电平取反。由于方式2是初值可以自动重新装载,从而省去对Tl重新装入初值06H的指令。中断返回后,到“AJMP HERE”指令处继续等待Tl的500μs定时中断。如此重复,即可得到上图所示的波形。

发布了11 篇原创文章 · 获赞 2 · 访问量 463

猜你喜欢

转载自blog.csdn.net/qq_41784284/article/details/103432824