设晶振频率6MHZ,用定时器/计数器t1以工作方式1进行10ms的定时,并在p1.7
设晶振频率6MHZ,用定时器/计数器t1以工作方式1进行10ms的定时,并在p1.7引脚上输出周期为20ms的连续方波。试编写完整程序(在编程之前需要对相关控制寄存器进行...
设晶振频率6MHZ,用定时器/计数器t1以工作方式1进行10ms的定时,并在p1.7引脚上输出周期为20ms的连续方波。试编写完整程序(在编程之前需要对相关控制寄存器进行设定并计算计数初值)
展开
展开全部
机器周期 =12/Fosc = 12/(6MHz) =2μs,20ms方波的半周期=10ms,
计数值 =10ms/2μs =5000,
用单片机定时器T1,工作方式1,16位计数寄存器,
计数初值 =2^16 -5000 =60536 =EC78h
;; T1初始化程序:
MOV TMOD, #00010000b ;; T1,定时模式,方式1
MOV TH1, #0ECh ;; 装入初值高8位
MOV TL1, #78h ;; 装入初值低8位
SETB ET1 ;; 允许T1中断
SETB EA ;; MCU开中断
SETB TR1 ;; 启动T1
WAIT: SJMP WAIT ;; 等待T1中断
;; T1中断服务程序(每隔半周期,T1计时溢出中断一次):
CPL P1.7 ;; P1.7引脚输出电平反转(高变低或低变高)
MOV TH1, #0ECh ;; 重装初值高8位
MOV TL1, #78h ;; 重装初值低8位
RETI ;; 中断返回
计数值 =10ms/2μs =5000,
用单片机定时器T1,工作方式1,16位计数寄存器,
计数初值 =2^16 -5000 =60536 =EC78h
;; T1初始化程序:
MOV TMOD, #00010000b ;; T1,定时模式,方式1
MOV TH1, #0ECh ;; 装入初值高8位
MOV TL1, #78h ;; 装入初值低8位
SETB ET1 ;; 允许T1中断
SETB EA ;; MCU开中断
SETB TR1 ;; 启动T1
WAIT: SJMP WAIT ;; 等待T1中断
;; T1中断服务程序(每隔半周期,T1计时溢出中断一次):
CPL P1.7 ;; P1.7引脚输出电平反转(高变低或低变高)
MOV TH1, #0ECh ;; 重装初值高8位
MOV TL1, #78h ;; 重装初值低8位
RETI ;; 中断返回
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询