p1.0、p1.1 经 7407 驱动 led 交替发光并以每秒一次的频率闪烁。硬件连接见下图(采用 6mhz 晶振)
分析:闪烁周期为 1s ,亮、灭各占一半,定时时间需要 500ms 。使用 6mhz 晶振,单片机最长定时时间仅为 131ms ,所以需要采用软件记数方法扩展定时时间。
使用定时 / 计数器 0 ,定时方式,工作方式 1 。
设置 tmod 控制字: tmod = 01h
使用 6mhz 晶振,机器周期为 2 μ s ,设定时时间 100ms ,定时初值 3cb0h 。定时器溢出 5 次为 500ms 。
程序如下:
org 0140h
led1 : mov tmod,#01h ;设置 t0 工作方式
setb p1.0 ;输出初始状态
clr p1.1
setb tr0 ;启动定时器
loop0: mov r2,#05h ;送软件计数初值
loop1: mov tl0,#0b0h ;送定时常数
mov th0,#3ch
jbc tf0,$ ;循环等待定时时间到
djnz r2,loop1 ;软件计数 –1 ≠ 0 循环
xrl p1,#03h ; p1.0、p1.1 求反
sjmp loop0 ;循环