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

📄 serial_80c552.asm

📁 飞利浦的80C552串口通信代码
💻 ASM
字号:
      ORG 0000H
      LJMP MAIN
      ORG 0023H
      LJMP SERVE    ;串行口中断服务程序入口

ORG 500H
MAIN:  MOV TMOD,#20H    ;定时器T1为方式2
       MOV TL1,#0FDH
       MOV TH1,#0FDH    ;波特率为9600
       SETB TR1         ;启动T1
       MOV S0CON,#50H    ;串行口工作在方式1 ,并启动接收
       SETB EA          ;开CPU总中断
WAIT:  SETB ES0          ;开串口中断
       NOP
       NOP

       CLR P1.0
       SETB P1.0
       LCALL DELAY1
       CLR P1.0
       CLR P1.1
       SETB P1.1
       LCALL DELAY1
       CLR P1.1

       NOP
       NOP
       AJMP WAIT        ;等待中断



GO: NOP
    AJMP GO



;******串口中断服务程序
SERVE:CLR ES0            ;关串口中断
      PUSH ACC
      PUSH DPH
      PUSH DPL
      MOV R1,#58H       ;接收字符存放始址
      MOV R7,#02H       ;接收字符的字节数
RXD:  JNB RI,RXD       ;等待接收字符
        CLR RI
        MOV A,S0BUF
      ;  MOV R2,ACC.7     ;将偶校验位送至60H保存
      ;  MOV 60H,R2
      ;  ANL A,#7FH      ;去偶校验位
        MOV @R1, A
      ;  MOV R3,P         ;取奇偶标志送至61H保存
      ;  MOV B,R3
      ;  ANL 60H,#01H     ;屏蔽他们的高7位
      ; ANL B,#01H
      ;  MOV A,60H
      ;  XRL A,B
      ; JNZ ERR1          ;偶校验正确否?
        INC R1
        DJNZ R7,RXD

 ;AJMP $

;----判断接收的指令
PD:   MOV R1,#58H       ;接收字符存放始址
      MOV R2,#02H       ;字节数
LOOP: CJNE @R1,#2FH,PD1
      INC R1
      DJNZ R2,LOOP
      AJMP PD2

PD1:     MOV TMOD,#20H
         MOV TL1,#0FDH
         MOV TH1,#0FDH
         MOV S0CON,#40H
         MOV R0,#48H         ;发送字符的始址
         MOV R7,#02H         ;发送字符的字节数
         MOV 48H, #33H
         MOV 49H, #44H
         SETB TR1
      AJMP TXD

PD2:     MOV TMOD,#20H
         MOV TL1,#0FDH
         MOV TH1,#0FDH
         MOV S0CON,#40H
         MOV R0,#48H         ;发送字符的始址
         MOV R7,#02H         ;发送字符的字节数
         MOV 48H, #55H
         MOV 49H, #66H
         SETB TR1
TXD:MOV A,@R0
      MOV S0BUF,A
WAIT1:JNB TI,WAIT1
      CLR TI
      INC R0
      DJNZ R7,TXD

      POP DPL
      POP DPH
      POP ACC
      MOV S0CON,#50H
      SETB ES0

 RETI


DELAY1: MOV 	R1,#0AH
DEL11:  MOV 	R2,#0FFH
DEL12:  MOV 	R3,#080H
DEL13:  DJNZ 	R3,DEL13 ; 1+[1+(1+2*255+ 2)*255+2]*10+2=0.66S
        DJNZ 	R2,DEL12
        DJNZ 	R1,DEL11
        RET

END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -