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

📄 乙机接受.asm

📁 两个单片机串行通行程序
💻 ASM
📖 第 1 页 / 共 2 页
字号:
RS EQU P3.3
RW EQU P3.4
E  EQU P3.5
ORG 0000H
LJMP START
ORG 000BH
LJMP TIMER0
ORG 0023H
LJMP JIESHOU
ORG 0100H
START:
      MOV SP,#6FH
      ;MOV 20H,#0FFH
      MOV 22H,#01H
      ;MOV 26H,#0FFH
      MOV 23H,#00H
      MOV 34H,#28H;存放矩形波频率
      MOV 35H,#28H;存放梯形波频率
      MOV 36H,#28H;存放锯齿波频率
      MOV 37H,#28H;存放三角波频率
      MOV 38H,#28H;存放正弦波频率
      MOV 39H,#0AH;存放矩形波占空比
      MOV 3BH,#00H;频率百位 (传送)
      MOV 3CH,#04H;频率十位 (传送)
      MOV 3DH,#00H;频率个位 (传送)
      MOV 3EH,#05H;占空比十分位(传送)
      MOV 3FH,#00H;占空比百分位(传送)
      MOV 40H,#00H
      MOV 41H,#00H
      MOV 55H,#19H
      MOV 56H,#0CH
      MOV 57H,#32H
      MOV 58H,#19H
      MOV 59H,#32H
      MOV 5AH,#25
      MOV 5BH,#25
      MOV R4,#50
      MOV TMOD,#01H
      MOV TH0 ,#3CH
      MOV TL0 ,#0AFH
      MOV IE,#92H
      SETB TR0
      MOV SCON,#80H
      MOV PCON,#00H
      SETB PS
      SETB REN
      LCALL INT_LCD
MIAN:
      LCALL DISP
      LCALL BOXING
      LCALL READKEY
      LJMP MIAN
JIESHOU:
      PUSH PSW
      PUSH ACC
      PUSH DPH
      PUSH DPL
      MOV A,SBUF
      ;JNB P,ERR
      ;JNB RB8,ERR ;加上校验不对
      CLR RI
      MOV 20H,A
      SETB 1FH
      ;LCALL READKEY
  ERR:
       POP DPL
       POP DPH
       POP ACC
       POP PSW
       RETI
DISP:                    ;显示子程序
      MOV R5,#00H
      LCALL ZHI
      MOV R6,#80H
DISP1:
      MOV A,R6
      LCALL WCOM
      JNB 15H,L01
      LJMP L1
L01:  JNB 16H,L02
      LJMP L1
L02:  JNB 17H,L03
      LJMP L1
L03:  JNB 18H,L04
      LJMP L1
L04:  JNB 19H,L7
L1:   CJNE R5,#18,L2K
      MOV A,3BH
      LJMP L8
L2K:  CJNE R5,#19,L2
      MOV A,3CH
      LJMP L8
L2:   CJNE R5,#20,L3
      MOV A,3DH
      LJMP L8
L3:   JNB 15H,L7
      CJNE R5,#26,L4
      MOV  A,3EH
      LJMP L8
L4:   CJNE R5,#27,L7
      MOV A,3FH
      LJMP L8
L5:   ;JNB 17H,L7
      ;CJNE R5,#26,L6
      ;MOV A,3EH
      LJMP L8
L6:   CJNE R5,#27,L7
      MOV A,3FH
      LJMP L8
L7:   MOV A,R5
      MOVC A,@A+DPTR
L8:   LCALL WDATE
      INC R5
      INC R6
      CJNE R5,#16,DISP2
      MOV R6,#0C0H
      DISP2:
      CJNE R5,#32,DISP1
      RET
ZHI:
      JNB 10H,ZHI1
      MOV DPTR,#DISTAB0
      AJMP ZHIEND
ZHI1:
      JNB 11H,ZHI2
      MOV DPTR,#DISTAB1
      AJMP ZHIEND
ZHI2:
      JNB 12H,ZHI3
      MOV DPTR,#DISTAB2
      AJMP ZHIEND
ZHI3:
      JNB 13H,ZHI4
      MOV DPTR,#DISTAB3
      AJMP ZHIEND
ZHI4:
      JNB 14H,ZHI5
      MOV DPTR,#DISTAB4
      AJMP ZHIEND
ZHI5:
      JNB 15H,ZHI6
      MOV DPTR,#DISTAB5
      MOV R3,34H
      LCALL BCDZH
      LCALL BCDZH1
      AJMP ZHIEND
ZHI6:
      JNB 16H,ZHI7
      MOV DPTR,#DISTAB6
      MOV R3,35H
      LCALL BCDZH
      AJMP ZHIEND
ZHI7:
      JNB 17H,ZHI8
      MOV DPTR,#DISTAB7
      MOV R3,36H
      LCALL BCDZH
      AJMP ZHIEND
ZHI8:
      JNB 18H,ZHI9
      MOV DPTR,#DISTAB8
      MOV R3,37H
      LCALL BCDZH
      AJMP ZHIEND
ZHI9:
      JNB 19H,ZHIEND
      MOV DPTR,#DISTAB9
      MOV R3,38H
      LCALL BCDZH
ZHIEND:
      RET
INT_LCD:
      LCALL DELAY5MS
      LCALL DELAY5MS
      LCALL DELAY5MS
      MOV A,#38H
      LCALL WCOM_NC;不检测忙信号
      LCALL DELAY5MS
      MOV A,#38H
      LCALL WCOM_NC
      LCALL DELAY5MS
      MOV A,#38H
      LCALL WCOM   ;忙检测
      LCALL DELAY5MS
      MOV A,#0CH
      LCALL WCOM
      LCALL DELAY5MS
      MOV A,#06H
      LCALL WCOM
      LCALL DELAY5MS
      MOV A,#01H
      LCALL WCOM
      LCALL DELAY5MS
      RET
WCOM_NC:;不忙检测子程序
      MOV P1,A
      CLR E
      NOP
      NOP
      CLR RS
      CLR RW
      SETB E
      LCALL DELAY250us
      CLR E
      RET
WCOM:;写指令子程序
      LCALL CHECKBUSY
      LCALL WCOM_NC
      RET
WDATE:;写数据子程序
      LCALL CHECKBUSY
      MOV P1,A
      CLR E
      NOP
      NOP
      SETB RS
      CLR RW
      SETB E
      LCALL DELAY250us
      CLR E
      RET
CHECKBUSY:;忙检测子程序
        PUSH ACC
        MOV P1,#0FFH
        CLR E
        NOP
        NOP
        CLR RS
        SETB RW
        SETB E
BUSYLOOP:
        NOP
        JB P1.7,BUSYLOOP
        CLR E
        POP ACC
        RET
BCDZH:
      PUSH DPH
      PUSH DPL
      MOV A,R3
      MOV B,#100
      DIV AB
      MOV 3BH,A
      MOV A,#10
      XCH A,B
      DIV AB
      MOV 3CH,A
      MOV 3DH,B
      MOV DPTR,#DISTABA
      MOV A,3BH
      MOVC A,@A+DPTR
      MOV 3BH,A
      MOV A,3CH
      MOVC A,@A+DPTR
      MOV 3CH,A
      MOV A,3DH
      MOVC A,@A+DPTR
      MOV 3DH,A
      POP DPL
      POP DPH
      RET
BCDZH1:
      PUSH DPH
      PUSH DPL
      MOV A,39H
      MOV B,#10
      DIV AB
      MOV 3EH,A
      MOV 3FH,#00H
      MOV DPTR,#DISTABA
      MOV A,3EH
      MOVC A,@A+DPTR
      MOV 3EH,A
      MOV A,3FH
      MOVC A,@A+DPTR
      MOV 3FH,A
      POP DPL
      POP DPH
      RET
BOXING:
      JNB 15H,BX1
      LCALL FANG
      LJMP BOXINGEND
BX1:  JNB 16H,BX2
      LCALL TIXING
      LJMP BOXINGEND
BX2:  JNB 17H,BX3
      LCALL JUCHI
      LJMP BOXINGEND
BX3:  JNB 18H,BX4
      LCALL SANJIAO
      LJMP BOXINGEND
BX4:  JNB 19H,BOXINGEND
      LCALL  ZHENXIAN
BOXINGEND:
      ;CLR 1FH
      RET
FANG:  
       MOV DPTR,#7FFFH ;通过高低电平地的变化来输出方波
       MOV A,#00H
       MOVX @DPTR,A ;向选通地址送低电平地
       MOV 53H,55H
       MOV 45H,5BH
       LCALL DELAY11
       MOV A,#0FFH
       MOVX @DPTR,A ;向选通地址送高电平
       MOV 53H,55H
       MOV 45H,5AH
       LCALL DELAY11
       JB 1FH,FANGEND
       LJMP FANG
FANGEND:
       RET
TIXING:
       MOV DPTR,#7FFFH
       MOV A,#00H
LOOP2: MOV 53H,56H
       LCALL DELAY10
       MOVX @DPTR,A ;选通地址
       INC A             ;延时
       CJNE A,#0FFH,LOOP2;每次以19H的梯度增加
DOWN:  MOV 53H,56H
       LCALL DELAY13
LOOP3:DEC A
      MOV 53H,56H
      LCALL DELAY10
      MOVX @DPTR,A
      CJNE A,#00H,LOOP3
      MOV 53H,56H
      LCALL DELAY13
      JB 1FH,TIXINGEND
      LJMP TIXING
TIXINGEND:
     RET
JUCHI:
      MOV DPTR,#7FFFH ;选通地址
  DA0:MOV A,#00H;初值放在R6
  DA1:MOVX @DPTR,A
      INC A
      MOV 53H,57H
      LCALL DELAY10
      CJNE A,#0FFH,DA1
      JB 1FH,JUCHIEND
      LJMP JUCHI
JUCHIEND:
      RET
SANJIAO:
         MOV DPTR,#7FFFH ;选通地址
   STR1: MOV A,#00H      ;通过上升和下降来产生三角波
   STR2: MOV 53H,58H
         LCALL DELAY10
         MOVX @DPTR,A    ;电压随时间上升
         INC A
         CJNE A,#0FFH,STR2
  STR3:  DEC A
         MOV 53H,58H
         LCALL DELAY10            ;电压随时间下降
         MOVX @DPTR,A
         CJNE A,#00H,STR3
         JB 1FH,SJEND
         LJMP SANJIAO
SJEND:

RET
ZHENXIAN:
        ;LCALL D8MS
        MOV R1,#00H        ;取表格初值
LOOP:   MOV A,R1           ;在表格里取数送到指定地址
        MOV DPTR,#SETTAB
        MOVC A,@A+DPTR
        MOV DPTR,#7FFFH
        MOVX @DPTR,A
        INC R1
        MOV 53H,59H
        LCALL DELAY10
        JB 1FH,ZXEND
        LJMP LOOP             ;表格加一
ZXEND:
        RET
READKEY: JNB 1FH,READKEYEND
READKEY0:
         JB 00H,READKEY1
         LCALL K0
READKEY1:
         JB 01H,READKEY2
         LCALL K1
READKEY2:
         JB 02H,READKEY3
         LCALL K2
READKEY3:
         JB 03H,READKEY4
         LCALL K3
READKEY4:
         JB 04H,READKEY5
         LCALL K4
READKEY5:
         JB 05H,READKEYEND
         LCALL K5
READKEYEND:
        CLR 1FH
        RET
K0:;查看主目录键
   LCALL DELAY
   JB 00H,K0END
   SETB 08H
   CLR 0BH
   CLR 0CH
   CLR 0DH
   MOV 40H,#00H
   MOV 41H,#01H
   MOV 22H,#02H
   MOV 23H,#00H
K0END:
   RET
K1:;"+"
    LCALL DELAY
    JB 01H,K10
    LJMP K101
K10:LJMP K1END
K101:
   SETB 09H
   JNB 08H,K15
   CLR 0BH
   INC 41H
   MOV A,41H
K11:
   CJNE A,#01H,K12
   MOV 22H,#02H
   MOV 23H,#00H
   LJMP K1END

⌨️ 快捷键说明

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