MOV ACC.7,C
MOV SBUF, A ;启动发送
DEC R7 INC DPTR
SETB EA ;允许串行口中断 WAIT: SETB ES
SJMP WAIT ;等待串行口中断
中断服务程序:
ORG 0023H LJMP SBV ORG 0100H SBV: CLR ES CLR TI
MOVX A, @DPTR MOV C, PSW.0 MOV ACC.7,C
MOV SBUF, A DJNZ R7,NEXT SJMP $
NEXT: INC DPTR
RETI END
;中断返回
;启动发送
第七章作业(补充题)
7-1 如下图所示8051的P1.4~P1.7接有4个发光二极管,P1.0~P1.3接有4个开关,最下方按键用于产生中断请求信号。每中断一次,采集一次P1.0~P1.3的开关状态反映到P1.4~P1.7的发光二极管上。
解:
程序清单如下:
ORG 0000H ;主程序 SJMP MAIN ORG 0003H
AJMP INT0 ;转入服务程序 ORG 0030H
MAIN: SETB IT0 ;设INT0为边沿触发 SETB EX0 ;允许INT0中断 SETB EA ;开放总允许 SJMP $
INT0: ORL P1, #0FH ;中断服务程序:
MOV A, P1 ;从P1口输入开关状态 SWAP A ;交换高、低4位
XRL A, #0F0H ;低4位不变, 高4位取反 MOV P1,A ;输出 RETI END
7-2单片机P1端口并行连接两只共阴极数码管显示器,利用扫描方式循环显示两位数00、01、02、……98、99。
1) 写出共阴极接法下数码管显示0~9的字型码; 2) 编写程序实现上述功能。
解:
1)3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H, 7FH, 6FH
2) 程序清单如下: ORG 0000H
AJMP MAIN ORG 000BH AJMP TIMER ORG 0030H
TAB DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H, 7FH, 6FH MAIN: MOV R0,#00H
MOV DPTR, #30H MOV TMOD, #01H MOV TH0, #0D8H MOV TL0, #0F0H SETB ET0 SETB EA SETB TR0
START: INC R0
CJNE R0,# 100, NEXT MOV R0,#00H
NEXT: MOV A, R0
MOV B,10 DIV AB
MOV R1, A ;十位缓存
MOV R2, B ;个位缓存 MOV R4, #200
DELAY:MOV R5, #200
DJNZ R5, $
DJNZ R4, DELAY AJMP START
TIMER: CLR TR0 MOV A, R1
MOVC A, @A+DPTR MOV P1, A SETB P2.1 MOV R6, #200 DJNZ R6, $ CLR P2.1 MOV A, R2 MOVC A, @A+DPTR MOV P1, A SETB P2.0 MOV R6,#200 DJNZ R6, $ CLR P2.0 MOV TH0, #0D8H MOV TL0, #0F0H SETB TR0 RETI
END
相关推荐: