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

📄 实验11_led&lcd时钟显示.s43

📁 MSP-TEST44X 学习板光盘资料及实验说明 本学习板是按照教育大纲
💻 S43
字号:
#include  "msp430x44x.h " 
;-------------------------------------------------------------
;MSP-Test44x Demo   lcd ,led dishplay the timer
;
;                          MSP430F449             
;                       -----------------
;                   /|\|              XIN|-  
;                    | |                 |         74HC373(1)&(2)
;         LCD        --|RST          XOUT|-       -------------
;        ----------    |                 |       |             | 
;       |     COM0|<---|COM0         P3.1|------>|D0           |
;       |       . |  . |  .            . |   .   |             |
;       |     COM3|<---|COM3         P3.7|------>|D7           |    
;       |      S0 |<---|S0           P4.0|------>|             | 
;       |       . |  . |             P4.1|------>|             |
;       |      S14|<---|S14              |
;
;
;  Yang Rui
;  Lierda, Inc
;  NOVEMBER 2003
;  Built with IAR Embedded Workbench Version: 1.26B
;--------------------------------------------------------------
;----------------RAM单元定义-----------------------------------
;--------------------------------------------------------------
second             	equ     	200h        ;秒
min     		    equ	        201h	    ;分
hour		        equ	        202h	    ;时		
flag            	equ         203h        ;标志寄存器
led_disp_data       equ         204h        ;led 显示缓冲
led_disp_bit        equ         205h        ;led显示位选
counter         	equ     	20ch        ;显示计数
dip                 equ         210h        ;小数点 

;-------------------------------------------------------------
;;首先,对系统进行初始化。关看门狗、置端口的输入输出状态、以及中断情况态
;;接着,对用到的ram区进行初始化、对标志位初始化。
;----------------------------------------------
                ORG     01100h                    ; Program Start
;-----------------------------------------------
Reset          
              	mov.w   #0a00h,SP                 ; Initia ize stackpointer
StopWDT       	mov.w   #WDTPW+WDTHOLD,&WDTCTL    ; Stop WDT              	         	
              	mov.b   #0ffh,&P2DIR
              	mov.b   #0ffh,&P3DIR 
              	mov.b   #00h,&P3OUT
              	                       
              	mov.b   #0ffh,&P4DIR
              	biS.b   #03h,&P4OUT
              	              	
              	mov.b   #0a6h,&BTCTL              ;1s int
              	bis.b   #BTIE,&IE2                ;Enable Basic Timer interrupt  
              	         
              	mov.w   #TASSEL1+TACLR,&TACTL     ;led 刷新一位定时
              	mov.w   #CCIE,&CCTL0
              	mov.w   #2400,&CCR0               ;3ms            
              	bis.w   #MC0,&TACTL
              	        
              	eint               	                                
              	call    #lcd_display_ona           ;open lcd        
              	
              	clr.b   &second
              	clr.b   &min
              	clr.b   &hour  
              	clr.b   &led_disp_data
              	clr.b   &led_disp_bit 
              	clr.b   R8         	
;--------------------------------------------------
;-----------        主程序区          -------------
;--------------------------------------------------
mainloop		
                nop
                nop
                nop
                nop
                nop
                call    #led_chang                ;led disp  buffer chang 
                call    #led_display              ;led display
                call    #lcd_display              ;lcd display
                
                jmp     mainloop
                      
;----------------------------------------------------   
;----------------   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                                                       
;----------------------------------------------------   
;----------------   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         reti            
;--------------------------------------------------
;-----------------  BASIC TIMER int    ------------
;-------------------------------------------------- 
BASIC_INT   	      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             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      97H
              DB      0DAH
              DB      0C3H
              DB      0CCH
              DB      0CFH
              DB      08BH
;-----------------------------------------------------------
;---------------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
           
;----------------------------------------------------------                 
; Interrupt Vector Table
;----------------------------------------------------------             
            RSEG    INTVEC             ; MSP430 RESET Vector        
;----------------------------------------------------------           
            DW      BASIC_INT               ;0FFE0h    
            DW      Reset                   ;0FFE2h    
            DW      Reset                   ;0FFE4h 
            DW      Reset                   ;0FFE6h
            DW      Reset	            ;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 + -