題77(5箇中斷源綜合題)
編程綜合題,要求:(晶振頻率11.0592M)
1,佔空比可調,可調範圍0-100%
2,波形的頻率1K
3,數碼管顯示速度等級(開機、復位顯示F,速度等級0-A)
4,使用串口打印ASCII碼
5,使用外部中斷1控制LED
備註:PWM:脈衝寬度調製
電路圖:
程序源碼:
DutyRatioADD BIT P1.2
DutyRatioDEC BIT P1.1
DutyRatioRES BIT P1.0
DutyRatioSTA BIT P1.3
PULSE BIT P1.7
LED EQU P0
ORG 0000H
LJMP START
ORG 0003H
LJMP ADDRINT0
ORG 000BH
LJMP ADDRT0
ORG 0013H
LJMP ADDRINT1
ORG 001BH
LJMP ADDRT1
ORG 0023H
LJMP ADDRUART
ORG 0030H
START:
LCALL Init
LOOP:
MOV SBUF,R5
JNB F0,$
CLR F0
INC R5
CJNE R5,#122,U1
MOV R5,#30H
U1:
SJMP LOOP
ADDRINT0:
SETB PULSE
JNB DutyRatioADD,L0
JNB DutyRatioDEC,L1
JNB DutyRatioRES,L2
JNB DutyRatioSTA,L7
L7:
SETB TR0
MOV R7,#5
AJMP RETURN0
L0:
CJNE R7,#10,L9
MOV R7,#10
AJMP RETURN0
L9:
INC R7
AJMP RETURN0
L1:
CJNE R7,#00H,T0L0
MOV R7,#00H
AJMP RETURN0
L2:
MOV R7,#00H
CLR TR0
CLR PULSE
MOV TL0,#9CH
MOV TH0,#9CH;200US
MOV P2,#0FH
AJMP L10
RETURN0:
MOV B,R7
ANL B,#0FH
MOV P2,B
L10:
JNB DutyRatioADD,$
JNB DutyRatioDEC,$
JNB DutyRatioRES,$
AJMP T0L1
T0L0:
DEC R7
AJMP RETURN0
T0L1:
RETI
ADDRT0: ;decide DUTY
INC A
MOV 60H,R7
CJNE A,60H,T1L0
CLR PULSE
T1L0:
CJNE A,#10,T1L1
CLR A
SETB PULSE
T1L1:
RETI
ADDRT1:
CPL P1.6
RETI
Init:
MOV SP,#88H
CLR A
MOV R4,#00H
MOV R5,#30H
MOV R7,#00H
MOV IE,#9FH
MOV TCON,#05H
MOV TMOD,#22H
MOV TL0,#9CH
MOV TH0,#9CH;200US
MOV TL1,#0F4H
MOV TH1,#0F4H;100US
CLR PULSE
MOV SCON,#01010000B
MOV PCON,#00H
CLR TR0
SETB P1.6
SETB TR1
MOV LED,#0AAH
RET
ADDRINT1:
INC R4
MOV LED,R4
CJNE R4,#255,L11
MOV LED,#55H
MOV R4,#00H
L11:
RETI
ADDRUART:
CLR TI
SETB F0
RETI
END
將5箇中斷源進行綜合應用,通過此題加深對中斷源優先級的理解。
仿真視頻:
《單片機彙編》期末考試、考研常見考題、習題,題型彙總(二十七)、玩轉單片機5箇中斷源,編程綜合題
強化記憶:
單片機5箇中斷源中斷入口地址(8m+3,m=0-4)
中斷源 入口地址
外部中斷0 0003H
定時器0 000BH
外部中斷1 0013H
定時器1 001BH
串口中斷 0023H
默認優先級:外部中斷0 > 定時器0 > 外部中斷1 > 定時器1 > 串行口中斷