📄 ser3.asm
字号:
;**************************************************
; 平凡单片机工作室
; HTTP://WWW.MCUSTUDIO.COM
; (C) COPYRIGHT 2003 PINGFAN'S MCUSTUDIO
; ALL RIGHTS RESERVED
;TIMER4.ASM
;作者:周坚
;功能描述:
;功能:中断方式接收数据,将接收到的数据以十进制送往数据码管显示
;这里给出实验仿真板的演示,进入调试后,打开实验仿真板,即显示01,
;打开VIEW->SERIAL WINDOW#1,随意击键,即可在数据码管上显示该字符的ASCII值
;注意,由于一些小写字母的ASCII超过100,故无法正确显示
;可参考书本自行设置硬件进行硬件练习
;附AVI文件是依次输入0,1,2,3,4,5,6,7,8,9和TAB、ESC及ENTER的现象
;用DSB-1A型单片机实验板可提供相应的程序
;**************************************************
FIRST EQU P2.7 ;第一位数码管的位控制
SECOND EQU P2.6 ;第二位数码管的位控制
DISPBUF EQU 5EH ;5E,5FH是显示缓冲区
ORG 0000H
LJMP START
ORG 23H
JMP RECIVE
ORG 30H
START:
MOV SP,#5FH ;初始化堆栈
MOV TMOD,#00100000B ;定时器1工作于方式2
MOV TH1,#0FDH ;定时初值
MOV TL1,#0FDH
ORL PCON,#10000000B ;SMOD=1
SETB TR1 ;定时器1开始运行
MOV SCON,#01010000B ;串行口工作于模式1
SETB REN
SETB EA
SETB ES
MOV SBUF,#1
MOV SBUF,#10
MOV DISPBUF,#0
MOV DISPBUF+1,#1
LOOP:
CALL DISP
JMP LOOP
RECIVE:
PUSH ACC
PUSH PSW
JB TI,SEND
CLR RI
MOV A,SBUF
MOV B,#10
DIV AB
MOV DISPBUF,A
MOV DISPBUF+1,B
JMP SEREXIT
SEND:
CLR TI
SEREXIT:
POP PSW
POP ACC
RETI
DISP:
PUSH ACC ;ACC入栈
PUSH PSW ;PSW入栈
MOV A,DISPBUF ;取第一个待显示数
MOV DPTR,#DISPTAB ;字形表首地址
MOVC A,@A+DPTR ;取字形码
MOV P0,A ;将字形码送P0位(段口)
CLR FIRST ;开第一位显示器位口
LCALL DELAY ;延时5毫秒
SETB FIRST ;关闭第一位显示器(开始准备第二位的数据)
MOV A,DISPBUF+1 ;取显示缓冲区的第二位
MOV DPTR,#DISPTAB
MOVC A,@A+DPTR
MOV P0,A ;将第二个字形码送P0口
CLR SECOND ;开第二位显示器
LCALL DELAY ;延时
SETB SECOND ;关第二位显示
POP PSW
POP ACC
RET
DELAY:
PUSH PSW
SETB RS0
MOV R7,#50
D1: MOV R6,#50
D2: DJNZ R6,$
DJNZ R7,D1
POP PSW
RET
DISPTAB: DB 28H,7EH,0A4H,64H,72H,61H,21H,7CH,20H,60H,0FFH
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -