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

📄 key3.s43

📁 使用LED和小键盘做一个记时的程序
💻 S43
📖 第 1 页 / 共 2 页
字号:

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                                                       
;----------------------------------------------------   
;----------------   lcd显示子程序   ----------------
;----------------------------------------------------
lcd_display     
                mov.b       #80h,&dip
	            mov.b     	#LCDM1,R15
dis_second      
                mov.b     	&second,R13
	            rra.b     	R13
            	rra.b     	R13
	            rra.b     	R13
	            rra.b     	R13
	            and.b     	#0fh,R13
	            mov.b     	lcd_table(R13),R14	           	         
        	    mov.b     	R14,1(R15)
	            mov.b     	&second,R13
	            and.b     	#0fh,R13
	            mov.b     	lcd_table(R13),R14	                    
	            mov.b     	R14,0(R15)	
	            
dis_min	       
                mov.b     	&min,R13
	            rra.b     	R13
            	rra.b     	R13
	            rra.b     	R13
	            rra.b     	R13
	            and.b     	#0fh,R13
	            mov.b     	lcd_table(R13),R14               	         
        	    mov.b     	R14,3(R15)
	            mov.b     	&min,R13
	            and.b     	#0fh,R13
	            mov.b     	lcd_table(R13),R14	
	            bis.b       #80h,R14                    
	            mov.b     	R14,2(R15)	
	            
dis_hour       
                mov.b     	&hour,R13
	            rra.b     	R13
            	rra.b     	R13
	            rra.b     	R13
	            rra.b     	R13
	            and.b     	#0fh,R13
	            mov.b     	lcd_table(R13),R14           	         
        	    mov.b     	R14,5(R15)
	            mov.b     	&hour,R13
	            and.b     	#0fh,R13
	            mov.b     	lcd_table(R13),R14	 
	            bis.b       #80h,R14                   
	            mov.b     	R14,4(R15)		            	                                          
	            ret            	            
;-------------------------------------------------- 

lcd_display_ona   
	              mov.b    #0FCh,&P5SEL                     ;Enable R(LCD) + COM Lines
	              mov.b    #LCDON+LCD4MUX+LCDP1,&LCDCTL     ;STK LCD 4Mux, S0-S19
	                                                        ;Basic Timer : SSEL=0 DIV=0 Reset=1,ACLK,32768/256 = 128Hz (7.8ms debounce time)
	                                                        ;Basic Timer reset disabled
	                                                        ;enable basic timer intrpt
	              call     #show_clr                        ;clear LCD
	              clr      R9
	              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                      
                      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
                    jeq         second_blink
                    cmp.b       #2,&fun_buffer
                    jeq         min_blink
                    cmp.b       #1,&fun_buffer
                    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            
                      call    #lcd_display              ;lcd display
                      
clock_ret                 reti
;--------------------------------------------------                                                    
;;-------显示处理子程序
;--------------------------------------------------
lcd_display_deal              
                      clr       R5
next_word_display
                      mov.b     #0FFH,LCDMEM(R5)
                      inc       R5
                      cmp.b     &counter,R5
                      jnz       next_word_display
                      ret           
;-------------------------------------------------------                            
;---------清显示存储区.
;-------------------------------------------------------
show_clr
            	mov.b	#00h,R6                      ; clear display memory
show_clr1
            	mov.b   #00h,LCDMEM(R6)
            	inc.b   R6
            	cmp.b	#0ah,R6
            	jnz     show_clr1
            	ret
            
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
              db      00h           ;no
              
;-----------------------------------------------------------
;---------------lcd显示代码--------------------------------
;-----------------------------------------------------------
lcd_table
            db        7bh            ;0
            db        12h            ;1
            db        4fh            ;2
            db        1fh            ;3
            db        36h            ;4
            db        3dh            ;5
            db        7dh            ;6
            db        13h            ;7
            db        7fh            ;8
            db        3fh            ;9
            db        00h            ;no
            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 + -