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

📄 无线识别.asm

📁 51单片机控制nrf401程序
💻 ASM
📖 第 1 页 / 共 2 页
字号:
;**********2007年9月2日  无线识别************************
  DAT   BIT  P2.7   ;HD7279
  CLK   BIT  P2.6
  CS    BIT  P2.5
  KEY   BIT  P3.2
  GPCS  BIT  P1.0   ;频头
  TXEN  BIT  P1.2
  PWR   BIT  P1.1
  YJCS  BIT  P2.2    ;液晶
  SID   BIT  P2.1    ;数据
  YCLK  BIT  P2.0    ;时钟
  P13   BIT  P1.3    ;LED
  NUM   EQU  5FH
           ORG  0000H
           AJMP MAIN
           ORG  0003H
           AJMP LINT0
           ORG 000BH
           MOV TH0,#3CH
           MOV TL0,#0B0H
           SETB 02H
           RETI
           ORG  0030H
;---------------------------------------------------
MAIN:      MOV SP,#60H
           MOV P1,#0FFH
           MOV P2,#3EH    ;CLK=DAT=0
           MOV P3,#0FFH
           CLR P1.4
           MOV TMOD,#21H  ;定时器1工作于方式2
           MOV TH1,#0e8h ;faH
           MOV TL1,#0e8h ;faH
           MOV TH0,#3CH
           MOV TL0,#0B0H
           MOV SCON,#50H  ;SM2=0 串行口工作于方式1
;REN=1允许接收  TI发送中断标志  RI接收中断标志
;TI=0 RI=0允许发送或接收 完毕后 硬件将其置'1' 发中断请求 响应后复位
	   MOV PCON,#80H  ;SMOD=1 波特率=4800
           SETB PWR        ;P1.2=pwr=0休眠状态
           CLR  TXEN       ;P1.1=txen接收
           CLR  GPCS       ;P1.0=cs  433.92mhz
           SETB TR1	   ;启动定时器1
	   CLR ET1	  ;禁止计时器1中断
           SETB ET0       ;允许计时器0中断
           setb IT0       ;负跳变触发
           SETB EX0        ;禁止外中断lint0中断
           setb  EA
           CLR  YJCS
           LCALL YANSH200
           setb YJCS
           ACALL STARYJ      ;调用液晶初始化
           LCALL YANSH200
CC:        SETB P13
           ACALL OFFDIS
           MOV 20H,#0
           ACALL CSH       ;东北林业大学
;*****************************************************
KLP:       JNB 00H,KLP      ;位00H=0表示无按键
           CLR 00H
           CJNE A,#12H,KLP1 ;F1有源识别 应答器无编码
           ACALL KEYGET
           MOV 40H,#41H     ;应答器无编码
           ACALL FASONG
           ACALL RECIVE
           ACALL XDISP
           AJMP CC
KLP1:      CJNE A,#13H,KLP2 ;F2有源识别 应答器有4位编码
           MOV 40H,#42H     ;应答器有编码
           ACALL FASONG
           ACALL RECIVE
           ACALL XDISP
           AJMP CC
KLP2:      CJNE A,#18H,KLP3 ;F3无源识别 应答器有4位编码
           ACALL WYUAN      ;充电
           ACALL RECIVE
           ACALL XDISP
           AJMP CC
KLP3:      CJNE A,#19H,KLP4 ;F4有源识别 应答器存储数据
           ACALL KEYGET
           MOV 40H,#43H
           ACALL FASONG
           ACALL RECIVE
           ACALL XDISP
           AJMP CC
KLP4:      CJNE A,#1AH,KLP  ;ESC有源识别 应答器上传存储数据
           MOV 40H,#44H
           ACALL FASONG
           ACALL RECIVE
           ACALL XDISP
           AJMP CC
;****************************************************
WYUAN:     ACALL OFFDIS
           ACALL XSDISP
           SETB P1.4       ;启动充电
           SETB TR0
           SETB ET0
           MOV NUM,#0
           ;MOV B,#0
CDIAN0:    JBC 02H,CDIAN1
           AJMP CDIAN0
CDIAN1:    INC NUM
           MOV A,NUM
           ;JNZ CDIAN0
           ;INC B
           ;MOV A,B
           CJNE A,#120,CDIAN0 ;判断是否充电结束
           CLR P1.4           ;充电结束
           CLR ET0            ;允许测试
           CLR TR0
           ACALL OFFDIS
           ACALL XSPLAY
           RET
;*****************************************************
KEYGET:    ACALL OFFDIS
           MOV R4,#80H         ;写入地址
           MOV  R0,#41H
           MOV  R5,#4
K1:        JNB  00H,K1      ;位00H=0表示无按键
           CLR  00H
           LCALL COMPARE
           CJNE A,#0FFH,K2
           AJMP K1
K2:        ORL A,#30H
           MOV  @R0,A
           LCALL KEYPLAY
           INC  R0
           INC R4
           DJNZ R5,K1
           RET
;*******************************************
KEYPLAY: SETB YJCS
         MOV A,#0F8H    ;DDRAM
         ACALL WRITE64
         MOV A,R4       ;写入地址
         ACALL WRITDAT
         MOV A,#0FAH    ;写一字节数据
         ACALL WRITE64
         MOV A,@R0
         ACALL WRITDAT
         ACALL DELAY1
         CLR YJCS
         RET

;*****************************************************
LINT0:   MOV A,#15H
         ACALL SEND    ;键盘中断
         ACALL RECEIVE ;读键值->A
         SETB 00H
         RETI
;*****************************************************
COMPARE:   CJNE A,#0,COM1
           MOV  A,#0
           RET
COM1:      CJNE A,#1,COM2
           MOV  A,#1
           RET
COM2:      CJNE A,#2,COM3
           MOV  A,#2
           RET
COM3:      CJNE A,#3,COM4
           MOV  A,#3
           RET
COM4:      CJNE A,#8,COM5
           MOV  A,#4
           RET
COM5:      CJNE A,#9,COM6
           MOV  A,#5
           RET
COM6:      CJNE A,#0AH,COM7
           MOV  A,#6
           RET
COM7:      CJNE A,#0BH,COM8
           MOV  A,#7
           RET
COM8:      CJNE A,#10H,COM9
           MOV  A,#8
           RET
COM9:      CJNE A,#11H,COM10
           MOV  A,#9
           RET
COM10:     MOV  A,#0FFH
           RET
;******************************************************
fasong:    MOV SCON,#40H
           CLR  GPCS
           SETB PWR        ;P2.2=pwr=1 工作状态
           SETB TXEN       ;P2.1=txen=1发送
           lcall yansh10   ;延时10毫秒

           mov r7,#5
fas6:      mov a,#0aah
           mov sbuf,a
fas7:      jbc ti,fas8
           ajmp fas7

fas8:     acall yan8
          djnz r7,fas6

           mov a,#00h
           mov sbuf,a
fas9:      jbc ti,fas10
           ajmp fas9
fas10:     acall yan8
           mov r0,#40h

           mov r7,#5
fas11:     mov a,@r0
           mov sbuf,a
fas12:     jbc ti,fas13
           ajmp fas12
fas13:     inc r0
           acall yan8
           djnz r7,fas11
           MOV SCON,#50H
           lcall yansh10
           CLR  GPCS
           SETB PWR        ;P2.2=pwr=1 工作状态
           CLR  TXEN       ;P2.1=txen接收
           ret
;*******************************************************
recive:
           MOV SCON,#50H
           CLR  GPCS
           SETB PWR        ;P1.1=pwr=1 工作状态
           CLR  TXEN       ;P1.2=txen接收
           lcall yansh10

jsf00:     mov r6,#3
jsf0:      jbc ri,jsf1
           ajmp jsf0
jsf1:      mov a,sbuf
           cjne a,#0aah,jsf00
           djnz r6,jsf0

jsf2:      jbc ri,jsf3
           ajmp jsf2
jsf3:      mov a,sbuf
           cjne a,#0aah,jsf4
           ajmp jsf2
jsf4:      cjne a,#00h,jsf0
           mov r0,#30h
           mov r7,#5

jsf7:      jbc ri,jsf8
           ajmp jsf7
jsf8:      mov a,sbuf
           mov @r0,a
           inc r0
           djnz r7,jsf7
           MOV SCON,#40H
           CLR  P13
           lcall yansh200
           ret
;*********发送A(1字节)到HD7279高位在前****************
SEND:      MOV R7,#8
           CLR CS
           ACALL  YAN50  ;延时50us
SLP:       RLC  A
           MOV DAT,C
           SETB CLK
           ACALL YAN8    ;延时8us
           CLR CLK
           ACALL YAN8
           DJNZ R7,SLP
           CLR DAT
           ACALL  YAN50
           RET
;*******  从 HD7279 接收(1字节)到A  ****************
RECEIVE:   MOV R7,#8
           SETB DAT
           ACALL YAN50
RLP:       SETB CLK
           ACALL YAN8    ;延时8us
           MOV C,DAT
           RLC A
           CLR CLK
           ACALL YAN8    ;延时8us
           DJNZ R7,RLP
           CLR DAT
           RET
;*******************************************
XSDISP:    SETB YJCS
           MOV R2,#8        ;写入汉字个数
           MOV R4,#90H      ;写入地址
           MOV DPTR,#TABLE3 ;写"正充电请等待.."
           LCALL DISP
           CLR YJCS
           RET
;*******************************************
XSPLAY1:  SETB YJCS
          MOV R2,#4        ;写入汉字个数
          MOV R4,#82H      ;写入地址
          MOV DPTR,#TABLE4 ;写"充电结束"
          LCALL DISP
          MOV R2,#6        ;写入汉字个数
          MOV R4,#90H      ;写入地址
          MOV DPTR,#TABLE5 ;写"请输入编码:"
          LCALL DISP
          CLR YJCS
          RET
;**************************************
TABLE0: DW  '东','北','林','业','大','学'
TABLE1: DW  '20','07','年','全','国','大','学','生'
TABLE2: DW  '电','子','设','计','竞','赛'
TABLE3: DW  '正','准','备','请','等','待','..','..'
;********************************************************
TABLE4:   DW '准','备','结','束'
TABLE5:   DW '请','输','入','编','码',': '
TABLE7:   DW  '信','息','学','院'
;*******************************************
XSPLAY:   SETB YJCS
          MOV R2,#8        ;写入汉字个数
          MOV R4,#90H      ;写入地址
          MOV DPTR,#TABLE6 ;写"充电结束正在测试"
          LCALL DISP
          CLR YJCS
          RET
TABLE6:   DW '准','备','结','束','正','在','测','试'
;-------------------------------------
CSH:    SETB YJCS
        MOV R2,#6           ;写入汉字个数
        MOV R4,#81H         ;写入地址
        MOV DPTR,#TABLE0    ;写"东北林业大学"
        ACALL DISP
        ;lcall yan20
        MOV R2,#8        ;写入汉字个数
        MOV R2,#4        ;写入汉字个数
        MOV R4,#92H      ;写入地址
        MOV DPTR,#TABLE7 ;写"信息学院"
        LCALL DISP
        ;lcall yan20
        MOV R2,#8 
        MOV R4,#88H      ;写入地址
        MOV DPTR,#TABLE1 ;写"2007年全国大学生" 
        LCALL DISP
        ;lcall yan20

⌨️ 快捷键说明

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