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

📄 comtest.asm

📁 单片机串口的测试软件
💻 ASM
字号:
单片机串口的测试软件,通信数据包括帧头、帧尾、帧长、帧起始和结束标志等。

       Right            EQU     0F0H
       Error            EQU     0F1H
       FrameHead        EQU     0F5H
       FrameTail        EQU     0FFH
       Frame_buffer     EQU     30H  ;(30H~~3FH) recieve buffer
       RAM              EQU     40H  ;(40H~~4FH) ram buffer
       FrameLen         EQU     25H
       Frame_Temp       EQU     26H
       Frame_End        EQU     27H
       Frame_XRL        EQU     28H
       Frame_Start_Flag BIT     00H
       Frame_End_Flag   BIT     01H
       Frame_Valid      BIT     02H
       
       ORG       0000H
       LJMP      MAIN
       ORG       0023H
       LJMP      COMM
MAIN:
       MOV       SP,#60H
       MOV       SCON,#0F0H
  ;     MOV       PCON,#00H
       MOV       TMOD,#20H
       MOV       TH1,#0FEH
       MOV       TL1,#0FEH
       SETB      EA
       SETB      TR1
       SETB      ES
       CLR       P1.0
LOOP:  NOP
       NOP
       SETB    	EA
       JB       Frame_Start_Flag,Invalid_Frame  ;judge frame valid
       JNB      Frame_End_Flag,Invalid_Frame
       MOV      A,Frame_End                     ; frame tail judge
       CJNE     A,#FrameTail,Frame_Invalid      ; judge frame valid
       MOV      R0,#Frame_buffer
       MOV      R1,#RAM
       MOV      R2,#6
CopyData:
       MOV      A,@R0
       MOV      @R1,A
       XRL      Frame_XRL,A
       INC      R0
       INC      R1
       DJNZ     R2,CopyData
       MOV      A,@R0
       CJNE     A,Frame_XRL,Frame_Invalid
       SETB     Frame_Valid
       MOV      SBUF,#Right
       JNB      TI,$
       LJMP     Invalid_Frame
Frame_Invalid:
       CLR      Frame_Valid
       MOV      SBUF,#Error
       JNB      TI,$
Invalid_Frame:
       LJMP 	LOOP

COMM:  PUSH  	PSW
       PUSH  	ACC
       PUSH  	DPH
       PUSH  	DPL
       SETB  	RS0
       CLR   	RI
       MOV      A,SBUF
       MOV      Frame_Temp,A
       CJNE     A,#FrameHead,Judge_Start_Flag
       MOV      A,FrameLen
       JNZ      Judge_Start_Flag
       INC      FrameLen
       SETB     Frame_Start_Flag      ;set frame start flag
       CLR      Frame_End_Flag
       MOV      R0,#Frame_buffer
       LJMP     CommExit
Judge_Start_Flag:
       JNB      Frame_Start_Flag,CommExit
       MOV      @R0,Frame_Temp
       INC      R0
       INC      FrameLen
       MOV      A,FrameLen
       CJNE     A,#8,Next_Judge
       MOV      Frame_End,Frame_Temp
       SETB     C
Next_Judge:
       JC       CommExit
       SETB     Frame_End_Flag
       CLR      Frame_Start_Flag
CommExit:
       POP      DPL
       POP      DPH
       POP      ACC
       POP      PSW
       SETB     EA
       RETI


DEL1BIT:MOV  R4,#8
        DJNZ R4,$
        RET
       END

⌨️ 快捷键说明

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