⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serial_com.asm

📁 serial communication with 89c51
💻 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 + -