计数/定时实验:
方式2的计数器:T0来自P3.4引脚。方式2可以自动重装数进入,比较好用。
ORG 0000H
LJMP START
START: MOV TMOD,#00000110B
MOV TH0,#255//初值
MOV TL0,#255
SETB TR0// 打开T0计数器
LP: JNB TF0,LP //没有溢出,等待计数;
CLR TF0 //溢出之后,清0,可不写
CPL P1.0 //取反
LJMP LP
END
中断实验:INT0来自P3.2引脚。正常流水灯,中断之后全亮一次。
ORG 0000H
LJMP START
ORG 0003H
LJMP STOP
ORG 0101H
START: SETB EX0 //开放外部中断0
SETB EA //中断总控制
SETB IT0//低脉冲触发
MOV A,#0FEH
LP: MOV P1,A
LCALL DELAY
RL A
LJMP LP
STOP: MOV P1,#00H
LCALL DELAY
RETI
DELAY: MOV R0,#0FFH
LP2: MOV R1,#0FFH
LP1: DJNZ R1,LP1
DJNZ R0,LP2
RET
END
感觉定时和计数其实差不多,不过定时的初始化要计算
ORG 0000H
LJMP START
START: MOV A,#0FEH
LP: MOV P1,A
MOV TMOD,#00000001B
MOV TH0,#0
MOV TL0,#0
SETB TR0
LP1: JNB TF0,LP1 //等待定时
CLR TF0
RL A
MOV TH0,#0
MOV TL0,#0
LJMP LP
END