编写AT89S52汇编程序利用定时器T1对外部信号计数要求每计满200个数将P10取反。
以下是AT89S52汇编程序的代码:
;设置定时器T1的计数器初值为0
MOV TH1,#0
MOV TL1,#0
;设置定时器T1为16位定时模式
SETB TMOD.10
;设置定时器T1为外部计数模式
SETB TMOD.11
;设置外部计数模式为计数下降沿触发
CLR TMOD.12
;使能定时器T1
SETB TR1
;初始化计数器
MOV R0,#0
LOOP: ;检查定时器T1是否溢出 JB TF1,T1_OVERFLOW
;继续计数
SJMP LOOP
T1_OVERFLOW: ;清除溢出标志 CLR TF1
;增加计数器值
INC R0
;检查计数器是否达到200
CJNE R0,#200,CLEAR_COUNTER
;取反P1.0
CPL P1.0
;清除计数器
MOV R0,#0
CLEAR_COUNTER: ;继续计数 SJMP LOOP
该程序首先设置定时器T1的计数器初值为0,并将定时器T1设置为16位定时模式和外部计数模式,计数下降沿触发。然后使能定时器T1,并初始化计数器R0为0。
程序进入一个无限循环,检查定时器T1是否溢出。如果没有溢出,就继续计数。如果溢出了,就清除溢出标志,增加计数器值,并检查计数器是否达到了200。如果达到了200,就取反P1.0并清除计数器。然后再次进入循环,继续计数
原文地址: https://www.cveoy.top/t/topic/eQ4q 著作权归作者所有。请勿转载和采集!