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

📄 keyboard3.s43.bak

📁 键盘扫描 并通过LED 适时 显示
💻 BAK
📖 第 1 页 / 共 2 页
字号:
;************************************************************************
fun_stop    
            clr.b     &fun_flag
            clr.b     fun_buffer
            jmp       fun_ret
                        
;*********************************************************************   
;          led显示子程序   
;*********************************************************************	            
led_chang                   
                    br          led_take(R8)
                    EVEN
led_take            
                    dw          second_table_h
                    dw          second_table_l 
                    dw          min_table_h
                    dw          min_table_l  
                    dw          hour_table_h
                    dw          hour_table_l 
                    
                    
second_table_h      
                    mov.b       &second,R14
                    mov.b       #2fh,&led_disp_bit
                    jmp         take_h
second_table_l                   
                    mov.b       &second,R14
                    mov.b       #1fh,&led_disp_bit
                    mov.b       #00h,&dip
                    jmp         take_l   
                                                                   

min_table_h         mov.b       &min,R14
                    mov.b       #3bh,&led_disp_bit
                    jmp         take_h

min_table_l         mov.b       &min,R14
                    mov.b       #37h,&led_disp_bit
                    mov.b       #20h,&dip
                    jmp         take_l

hour_table_h        mov.b       &hour,R14
                    mov.b       #3eh,&led_disp_bit
                    jmp         take_h

hour_table_l        mov.b       &hour,R14
                    mov.b       #3dh,&led_disp_bit
                    mov.b       #20h,&dip
                    jmp         take_l
                                   
take_h              mov.b     	R14,R13
	                rra.b     	R13
            	    rra.b     	R13
	                rra.b     	R13
	                rra.b     	R13
	                and.b     	#0fh,R13
	                mov.b     	led_table(R13),&led_disp_data
	            
	                ret         	           	         
take_l        	    
	                mov.b     	R14,R13
	                and.b     	#0fh,R13
	                mov.b     	led_table(R13),&led_disp_data	
	                add.b       &dip,&led_disp_data                              
	                ret                         	             
;*********************************************************************   
;                     led显示子程序   
;*********************************************************************

led_display                                                                   
                    mov.b       &led_disp_data,&P3OUT   ;send data
                    bis.b       #02h,&P4OUT             ;open data choose                   
                    bic.b       #02h,&P4OUT             ;close data choose                  
                     
                    
                    mov.b       &led_disp_bit,P3OUT
                    bis.b       #01h,&P4OUT              ;open bit choose
                    bic.b       #01h,&P4OUT              ;close data choose 
                    ret                                                       
;******************************************************************- 
;                    TimerA_int   
;******************************************************************-
Timera_int                 
                      inc.b     R8
                      inc.b     R8
                      cmp.b     #0ch,R8
                      jnz       Timer_int_end
                      clr.b     R8  
                                     
Timer_int_end         push.b  &second
                      push.b  &min
                      push.b  &hour
                      call    #led_blink                ;if keypressed then led blink       
                      call    #led_chang                ;led disp  buffer chang 
                      call    #led_display              ;led display 
                      pop.b   &hour
                      pop.b   &min
                      pop.b   &second
                      reti     
;******************************************************************
;         led_blink 
;******************************************************************
led_blink           cmp.b       #3,&fun_buffer  ;按下功能键三次,秒钟对应的LED闪烁
                    jeq         second_blink
                    cmp.b       #2,&fun_buffer  ;按下功能键两次,分钟对应的LED闪烁
                    jeq         min_blink
                    cmp.b       #1,&fun_buffer  ;按下功能键一次,小时对应的LED闪烁
                    jeq         hour_blink 
                    jmp         blink_ret       
second_blink        
                    bit.b       #1,&second_flag  
                    jnz         s_ret                          
                    mov.b       #0aah,&second
s_ret               jmp         blink_ret  
min_blink           
                    bit.b       #1,&second_flag
                    jnz         m_ret                          
                    mov.b       #0aah,&min                    
m_ret               jmp         blink_ret  
hour_blink          
                    bit.b       #1,&second_flag
                    jnz         blink_ret                         
                    mov.b       #0aah,&hour
                      
blink_ret           ret                                                                                                      
;******************************************************************-
;          BASIC TIMER int      
;******************************************************************- 
BASIC_INT   	      
                      xor.b   #01h,&second_flag
                      bit.b   #1,&second_flag
                      jz      clock_ret     
                      
                      xor.b   #01h,&flag                      
                      setc
BASIC_END	          
                      dadc.b   &second
                      cmp.b   #60h,&second
                      jlo     clock_end
                      clr.b   &second
                      dadc.b   &min
                      cmp.b   #60h,&min
                      jlo     clock_end
                      dadc.b   &hour
                      clr.b   &min
                      cmp.b   #24h,&hour
                      jlo     clock_end
                      clr.b   &hour
clock_end            
                      
clock_ret                 reti
            
delay       	mov.b   #0ffh,R9
ttt         	nop
            	nop
            	dec.b   R9
            	jnz     ttt
            	ret

;***************************************************************************
;           led显示代码    
;*************************************************************************** 			
led_table			
              db      0d7h          ;0
              db      14h           ;1
              db      0cdh          ;2
              db      5dh           ;3
              db      1Eh           ;4
              db      5bh           ;5
              db      0dbh          ;6
              db      15h           ;7
              db      0dfh          ;8
              db      05fh          ;9
              db      00h           ;no,用于在熄灭LED
              db      00h           ;no
              
;***************************************************************************                 
;          Interrupt Vector Table
;***************************************************************************             
            RSEG    INTVEC             ; MSP430 RESET Vector        
;***************************************************************************           
            DW      BASIC_INT               ;0FFE0h    
            DW      Reset                   ;0FFE2h    
            DW      Reset                   ;0FFE4h 
            DW      Reset                   ;0FFE6h
            DW      PORT1_INT	            ;0FFE8h
            DW      Reset                   ;0FFEAh
            DW      Timera_int              ;0FFECh 
            DW      Reset                   ;0FFEEh
            DW      Reset                   ;0FFF0h 
            DW      Reset                   ;0FFF2h
            DW      Reset                   ;0FFF4h 
            DW      Reset                   ;0FFF6h
            DW      Reset                   ;0FFF8h 
            DW      Reset                   ;0FFFAh
            DW      Reset                   ;0FFFCh 
            DW      Reset                   ;0FFFEh            
            END    
              	   


		
		   
			










⌨️ 快捷键说明

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