📄 serial_com.asm
字号:
;----------------------------------------------------------------------------------------;
;THIS PROGRAM OUTPUTS DIFFERENT MESSAGES FROM THE SERIAL PORT OF 89C51 ON PRESSING THE ;
;PUSH BUTTONS ATTACHED TO P1.ALSO THIS DISPLAYS THE NUMERIC DATA ENTERED FROM THE PC'S ;
;KEYBOARD ON THE SEVEN SEGMENT DISPLAY ATTACHED TO P0. ;
;----------------------------------------------------------------------------------------;
;If you have any querries about this code please contact me at: ;
; ;
; ;
; kool_projects@yahoo.com ;
; mubasharpk09@hotmail.com ;
; ;
; Cell#03018557978 ;
; ;
;or visit my website: ;
; ;
; http://www.geocities.com/kool_projects ;
;----------------------------------------------------------------------------------------;
SW1 EQU P1.0
SW2 EQU P1.1
SW3 EQU P1.2
ORG 0000H
LJMP MAIN
ORG 0023H
LJMP SERIAL_ISR
MESSAGE1:DB 'MY NAME IS MUBASHAR YASIN',00H
MESSAGE2:DB 'I AM AN ELECTRICAL ENGINEER',00H
MESSAGE3:DB 'I LOVE TO PLAY WITH 8051',00H
;;;;;;;;;;;;;;;;
SERIAL_INIT:
;;;;;;;;;;;;;;;;
MOV SCON,#52H ;8-BIT UART,REN
MOV TMOD,#20H ;8-BIT AUTO RELOAD MODE
MOV TH1,#-3 ;9600 BPS AUTO RELOAD VALUE
SETB EA ;GLOBAL INTERRUPT ENABLE
SETB ES ;SERIAL INTERRUPT ENABLE
SETB PS ;HIGH PRIORITY FOR SERIAL INTERRUPTS
SETB TR1 ;START TIMER
RET
;;;;;;;;;;;;;;;;
SERIAL_ISR:
;;;;;;;;;;;;;;;;
PUSH ACC
JB RI,READ ;CHECK RI SET?
LJMP EXIT4
READ: CLR RI
MOV A,SBUF
MOV R1,A
LCALL DISPLAY
EXIT4:POP ACC
RETI
;;;;;;;;;;;;;;;;
LOOK_UP:
;;;;;;;;;;;;;;;;
INC A
MOVC A,@A+PC
RET
TABLE:DB 0x40,0x7C,0x12,0x18,0x2C,0x09,0x01,0x5C,0x00,0x08 ;COMMON ANODE DISPLAY
;;;;;;;;;;;;;;;;
DISPLAY:
;;;;;;;;;;;;;;;;
SUBB A,#30H
LCALL LOOK_UP
MOV P0,A
RET
;;;;;;;;;;;;;;;;
MSG1:
;;;;;;;;;;;;;;;;
JNB SW1,$ ;WAIT FOR KEY RELEASE
MOV DPTR,#MESSAGE1
MOV R0,#0H
RPT1: MOV A,R0
MOVC A,@A+DPTR
JZ EXIT1
JNB TI,$
CLR TI
MOV SBUF,A
INC R0
LJMP RPT1
EXIT1:RET
;;;;;;;;;;;;;;;;
MSG2:
;;;;;;;;;;;;;;;;
JNB SW2,$ ;WAIT FOR KEY RELEASE
MOV DPTR,#MESSAGE2
MOV R0,#0H
RPT2: MOV A,R0
MOVC A,@A+DPTR
JZ EXIT2
JNB TI,$
CLR TI
MOV SBUF,A
INC R0
LJMP RPT2
EXIT2:RET
;;;;;;;;;;;;;;;;
MSG3:
;;;;;;;;;;;;;;;;
JNB SW3,$ ;WAIT FOR KEY RELEASE
MOV DPTR,#MESSAGE3
MOV R0,#0H
RPT3: MOV A,R0
MOVC A,@A+DPTR
JZ EXIT3
JNB TI,$
CLR TI
MOV SBUF,A
INC R0
LJMP RPT3
EXIT3:RET
;;;;;;;;;;;;;;;;
MAIN:
;;;;;;;;;;;;;;;;
MOV SP,#70H ;INITIALIZE STACK POINTER
LCALL SERIAL_INIT
AGAIN:
JNB SW1,ONE
JNB SW2,TWO
JNB SW3,THREE
LJMP AGAIN
ONE: LCALL MSG1
LJMP AGAIN
TWO: LCALL MSG2
LJMP AGAIN
THREE:LCALL MSG3
LJMP AGAIN
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -