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

📄 485_a.s43.bak

📁 使用LED显示接收到的数据
💻 BAK
字号:
;
;
;
;
;
#include "msp430x44x.h"

;------------------------------------------------
;  定义数据
;
;-------------------------------------------------
Receive_Buf  equ   20CH
Send_Buf     equ   20DH
R_Flag       equ   20EH   
LED_Buf      equ   20FH

LED_CTRL    equ    215H
KEY_Pressed equ    216H
KEY_Val     equ    217H
KEY_Flag    equ    218H 

   
main:
             push.w  R10
             mov.w   #0x5A80,&WDTCTL
             call    #init_Keyboard
             call    #init_LED
             call    #init_BT
             call    #init_485
             eint    
MainLoop     call    #key_Event
             cmp.b   #0x1,&KEY_Flag
             jne     T12
             mov.b   &KEY_Val,&Send_Buf
             call    #rs485_SendData
             clr.b   &KEY_Flag
T12          cmp.b   #0x1,&R_Flag
             jnc     MainLoop
             clr.b   R10
T14          cmp.b   #0x5,R10
             jc      T13
             mov.b   R10,R14
             and.w   #0xFF,R14
             mov.w   #LED_Buf,R15
             mov.b   R10,R12
             and.w   #0xFF,R12
             add.w   R12,R15
             mov.b   0x1(R15),LED_Buf(R14)
             inc.b   R10
             jmp     T14
T13          mov.b   &Receive_Buf,&0x214
             clr.b   &R_Flag
             jmp     T12
init_BT:
            mov.b   #0x16,&BTCTL
            bis.b   #0x80,&IE2
            ret     
BT_Interrupt:
                 push.w  R13
                 push.w  R12
                 push.w  R15
                 push.w  R14
                 call    #led_Display
                 pop.w   R14
                 pop.w   R15
                 pop.w   R12
                 pop.w   R13
                 reti    PC
   
Shift_L:
                 tst.b   R14
                 jeq     0x13DA
SHIFT            rla.w   R12
                 dec.b   R14
                 jne     SHIFT
                 ret     
H_Mul:
                 push.w  SR
                 dint    
                 nop     
                 mov.w   R12,&MPY
                 mov.w   R14,&OP2
                 mov.w   &RESLO,R12
                 mov.w   &RESHI,R13
                 reti    PC

init_485:
         bic.b   #0x40,&FLL_CTL0       ;
         bis.b   #0x1,&U0CTL           ;
         bis.b   #0x10,&U0CTL          ;8-bit 字符
         bis.b   #0x34,&FLL_CTL1       ;开启第二个振荡器
CLEAR_F  bic.b   #0x2,&IFG1            ;清除OSCFault标识
         mov.b   #0xFF,R14             ;
T1       cmp.b   #0x1,R14              ;
         jnc     T2
         add.b   #0xFF,R14
         jmp     T1
T2       bit.b   #0x8,&FLL_CTL0        ;检测第二个振荡器是否正常工作
         jc      CLEAR_F               ;
         bis.b   #0x1,&U0CTL           ;
         bis.b   #0x10,&U0CTL          ;
         mov.b   #0x30,&U0TCTL         ;uclk=smclk
         mov.b   #0xA0,&U0BR0          ;在4MHz下进行9600波特率通讯
         mov.b   #0x1,&U0BR1           ;
         mov.b   #0x5E,&U0MCTL         ;
         bic.b   #0x1,&U0CTL           ;
         bis.b   #0xC0,&ME1
         bis.b   #0x40,&IE1
         clr.b   &IFG1
         bis.b   #0x30,&P2SEL
         and.b   #0xCF,&P2DIR
         bis.b   #0x10,&P2DIR
         clr.b   &Receive_Buf
         clr.b   &Send_Buf
         bis.b   #0x4,&P4DIR
         bic.b   #0x4,&P4SEL
         bic.b   #0x4,&P4OUT
         ret     
rs485_SendData:
          bis.b   #0x4,&P4OUT
          mov.b   &Send_Buf,&U0TXBUF
T3        bit.b   #0x1,&U0TCTL
          jnc     T3
          bic.b   #0x4,&P4OUT
          ret     
data_Receive:
         mov.b   &U0RXBUF,&Receive_Buf
         mov.b   #0x1,&R_Flag
         reti    PC
init_LED:
         mov.b   #0xFF,&P3DIR
         clr.b   &P3OUT
         bis.b   #0x3,&P4DIR
         and.b   #0xFC,&P4OUT
         clr.b   &LED_CTRL
         clr.b   R14
T4       cmp.b   #0x6,R14
         jc      EXIT_I
         mov.b   R14,R15
         and.w   #0xFF,R15
         clr.b   LED_Buf(R15)     ;-----
         inc.b   R14
         jmp     T4
EXIT_I   ret     
led_Display:
             mov.w   #0x1,R15
             mov.b   &LED_CTRL,R14
             and.w   #0xFF,R14
             mov.b   LED_Buf(R14),R14
             and.w   #0xFF,R14
             mov.b   NUM_LED(R14),&P3OUT
             bis.b   #0x2,&P4OUT
             bic.b   #0x2,&P4OUT
             mov.b   R15,R12
             mov.b   &LED_CTRL,R14
             call    #Shift_L
             inv.b   R12
             mov.b   R12,&P3OUT
             bis.b   #0x1,&P4OUT
             bic.b   #0x1,&P4OUT
             inc.b   &LED_CTRL
             cmp.b   #0x6,&LED_CTRL
             jnc     EXIT_D
             clr.b   &LED_CTRL
EXIT_D       ret     
init_Keyboard:
             and.b   #0x1,&P1DIR
             bis.b   #0xE,&P1DIR
             bis.b   #0xE,&P1OUT
             clr.b   &KEY_Flag
             clr.b   &KEY_Pressed
             ret     
check_Key:
                 push.w  R10
                 push.w  R11
                 push.w  R8
                 push.w  R9
                 mov.b   #0x8,R8
                 clr.b   R10
T9               cmp.b   #0x3,R10
                 jc      T5
                 bis.b   #0xE,&P1OUT
                 sub.b   R8,&P1OUT
                 clrc    
                 rrc.b   R8
                 mov.b   &P1IN,R14
                 and.b   #0xF0,R14
                 cmp.b   #0xF0,R14
                 jc      T6
                 mov.b   #0x80,R9
                 clr.b   R11
T8               cmp.b   #0x4,R11
                 jc      T6
                 mov.b   &P1IN,R14
                 and.b   R9,R14
                 tst.b   R14
                 jne     T7
                 mov.b   R10,R12
                 and.w   #0xFF,R12
                 mov.w   #0x4,R14
                 call    #H_Mul
                 mov.b   R11,R14
                 and.w   #0xFF,R14
                 add.w   R12,R14
                 mov.b   0x200(R14),&KEY_Val
                 jmp     T5
T7               clrc    
                 rrc.b   R9
                 inc.b   R11
                 jmp     T8
T6               inc.b   R10
                 jmp     T9
T5               pop.w   R9
                 pop.w   R8
                 pop.w   R11
                 pop.w   R10
                 ret     
    
delay:
                 mov.w   #0xFF,R14
T10              tst.w   R14
                 jeq     EXIT_Delay
                 add.w   #0xFFFF,R14
                 jmp     T10
EXIT_Delay       ret     
key_Event:
                push.w  R10
                and.b   #0x1,&P1OUT
                mov.b   &P1IN,R10
                tst.b   &KEY_Pressed
                jne     T11
                mov.b   R10,R14
                and.b   #0xF0,R14
                cmp.b   #0xF0,R14
                jc      T11
                mov.b   #0x1,&KEY_Pressed
                call    #delay
                call    #check_Key
                jmp     EXIT_K
T11             cmp.b   #0x1,&KEY_Pressed
                jne     EXIT_K
                and.b   #0xF0,R10
                cmp.b   #0xF0,R10
                jne     EXIT_K
                clr.b   &KEY_Pressed
                mov.b   #0x1,&KEY_Flag
EXIT_K          pop.w   R10
                ret  
NUM_LED
     db   0xd7
     db   0x14
     db   0xcd
     db   0x5d
     db   0x1E
     db   0x5b
     db   0xdb
     db   0x15
     db   0xdf
     db   0x5f
     db   0x9f
     db   0xda
     db   0xc3
     db   0xcc
     db   0xcf
     db   0x8b
     db   0x00
KEY_MAP
     db   0x01
     db   0x02
     db   0x03
     db   0x0A
     db   0x04
     db   0x05
     db   0x06
     db   0x00
     db   0x07
     db   0x08
     db   0x09
     db   0x0b
    

⌨️ 快捷键说明

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