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

📄 voter.asm

📁 我自己写的短距离无线通信系统的收发程序
💻 ASM
字号:
              ORG   0000H
              AJMP  VOTER
              ORG   0030H
;*****************************************************************
;报到子程序
VOTER:        MOV   A,50H             ;50H存放地址命令标志
              CJNE  A,#255,VOTER_4    ;Ra=255?不等则跳转
              CLR   P2.5              ;表决状态灯亮,允许表决
              SETB  EA                ;开中断
VOTER_1:      MOV   C,P2.5            ;p2.5是表决状态显示位
              JC    VOTER_5           ;(P2.5=1)表决取消则转移
              MOV   C,P1.2            ;扫描P1.1,P1.1是S2按键
              LCALL DELAY_10ms        ;延时10ms消抖
              ORL   C,P1.2            ;再读P1.1状态,看两次结果是否都为0
              JC    VOTER_2            ;(P1.1=1)S2键没有按下则转移
              CLR   EA                ;关中断
           ;******************************************************
           ;需要修改的地址Ra和命令Ri
              MOV   R2,#00H           ;R2存放本机地址,需要修改
              MOV   R3,#04H           ;R3存放命令(04代表同意).需要修改
           ;******************************************************
              LCALL SEND              ;调发送子程序
              CLR   P2.6              ;已报到灯亮
              AJMP  VOTER_END         ;返回
VOTER_2:      MOV   C,P1.3            ;扫描P1.1,P1.1是S2按键
              LCALL DELAY_10ms        ;延时10ms消抖
              ORL   C,P1.3            ;再读P1.1状态,看两次结果是否都为0
              JC    VOTER_3           ;(P1.1=1)S2键没有按下则转移
              CLR   EA                ;关中断
           ;******************************************************
           ;需要修改的地址Ra和命令Ri
              MOV   R2,#00H           ;R2存放本机地址,需要修改
              MOV   R3,#05H           ;R3存放命令(04代表反对).需要修改
           ;******************************************************
              LCALL SEND              ;调发送子程序
              CLR   P2.6              ;已表决灯亮
              AJMP  VOTER_END         ;返回
VOTER_3:      MOV   C,P1.4            ;扫描P1.1,P1.1是S2按键
              LCALL DELAY_10ms        ;延时10ms消抖
              ORL   C,P1.4            ;再读P1.1状态,看两次结果是否都为0
              JC    VOTER_1           ;(P1.1=1)S2键没有按下则转移重新扫描
              CLR   EA                ;关中断
           ;******************************************************
           ;需要修改的地址Ra和命令Ri
              MOV   R2,#00H           ;R2存放本机地址,需要修改
              MOV   R3,#06H           ;R3存放命令(06代表弃权).需要修改
           ;******************************************************
              LCALL SEND              ;调发送子程序
              CLR   P2.6              ;已表决灯亮
              AJMP  VOTER_END         ;返回
VOTER_4:      CJNE  A,#254,VOTER_ERR  ;Ra=254?不等则跳转
              SETB  P2.5              ;取消表决状态
              SETB  P2.6
VOTER_5:      CLR   EA                ;开中断
              AJMP  VOTER_END         ;返回
VOTER_ERR:    MOV   P2,#00H           ;出错,灯全亮
VOTER_END:    RET
;***********************************************************************
;延时子程序
DELAY_10ms:  MOV    R7,#32
DEL1:        MOV    R6,#142         ;因为晶振为11.0592MHZ,所以t=12/(11.0592×1000000)
             NOP
DEL2:        DJNZ   R6,DEL2         ;142×2t+2t=286t
             DJNZ   R7,DEL1         ;(286t+2t)×32+t=10.001ms
             RET
             END

⌨️ 快捷键说明

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