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

📄 ic_card.s43

📁 使用MSP430系列单片机开发的低功耗转速测量系统
💻 S43
📖 第 1 页 / 共 2 页
字号:
#include "msp430xW42x.h"         ; standard definition include file
#include "global_vars.h"         ; global variables include file
;********************************************************************/
; Main program 
;********************************************************************/ 
		ORG     0E000h 
MAIN_T  
    		MOV     	#WDTHOLD+WDTPW,&WDTCTL                                 
    		mov.w   	#300h,SP 
    		MOV.B   	#OSCCAP1+OSCCAP0,&FLL_CTL0    
lo  		BIT.B   	#002h,&FLL_CTL0            
    		JNZ     	lo 
                mov     	#0F000h,R5
osc_wait             
                dec     	R5
                jnz     	osc_wait 
                clr     	R5  
clr_ram_field
                clr.b   	ram_start(R5)
                inc     	R5
                cmp     	#1000,R5
                jnz     	clr_ram_field  
init_port     		
     		mov.b          	#0FFh,&P1DIR  
                mov.b          	#0FFh,&P2DIR    		
    		mov.b 		#0FFh,&P3DIR 
    		mov.b 		#0FFh,&P4DIR  
    		mov.b 		#0FFh,&P5DIR    		     		
     		mov.b 	        #0FFh,&P6DIR     
     		clr.b 		&P6OUT       
     		clr.b 		&P5OUT       
    		clr.b 		&P4OUT        
    		clr.b 		&P3OUT       
    		clr.b 		&P2OUT       
    		clr.b 		&P1OUT 
    		bic.b           #ic_key_bit,&P1DIR	
                bis.b           #ic_key_bit,&P1IES           
                bis.b           #ic_key_bit,&P1IE        
     		bis.b           #ic_rst+ic_clk+ic_vcc+ic_data,&P1DIR 
     		clr.b           &P1IFG
Init_real_LCD
     		mov.b   	#0AEh,&BTCTL                 	
     		bic.b   	#BTIFG,&IFG2
     		bis.b   	#BTIE,&IE2     		
     		call    	#totle_water_display    		
     		eint    
main_loop
     		BIS        	#CPUOFF+SCG1+SCG0+GIE,SR  
     		jmp        	main_loop
;;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++  
rtc_deal   
                bit      	#view_display_bit,&system_flag1
                jnz      	view_information
                bit      	#view_display_bit1,&system_flag1
                jz       	rtc_deal_end
                dec.b    	&information_delay
                jnz      	rtc_deal_end
                bic      	#view_display_bit1,&system_flag1
                bic.b    	#LCDON,&LCDCTL
                call     	#show_clr
rtc_deal_end               
                reti
view_information
                dec.b   	&information_delay
                jnz     	rtc_display_loop
                clr.b   	&lcd_display_type
                bic     	#view_display_bit,&system_flag1
                bic.b   	#LCDON,&LCDCTL
                call    	#show_clr                
                reti
rtc_display_loop
                inc.b   	&lcd_display_type
                cmp.b   	#1h,&lcd_display_type
                jz      	totle_display
                cmp.b   	#4h,&lcd_display_type
                jz      	remain_display
                cmp.b   	#07h,&lcd_display_type
                jz      	buy_display
                clr.b   	&lcdmem+8  
                reti

totle_display
                call    	#totle_water_display
                reti
            
remain_display
                call    	#remain_water_display
                reti
               
buy_display
                call    	#buy_water_display	         
                reti 
;;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
port_int1
             	bit.b   	#ic_key_bit,&P1IFG
             	jnz     	ic_card_deal              	
             	clr.b   	&P1IFG
             	reti
;;------------------
ic_card_deal
               	br      	#ic_card_operation
;;++++++++++++++++++++++++++++++++++++++++++++++++++++++
ic_card_operation
		dint              	
              	bis.b   	#ic_rst+ic_clk+ic_vcc+ic_data,&P1DIR
              	bic.b   	#ic_rst+ic_clk+ic_vcc+ic_data,&P1OUT
              	bic.b   	#ic_key_bit,&P1IFG
              	call    	#key_delay              
              	bit.b   	#ic_key_bit,&P1IN
              	jz     	        ic_card_operation_end_1 
              	bic.b   	#ic_key_bit,&P1IFG              	
                eint         	
                reti               	
ic_card_operation_end_1
              	call    	#ic_reset
              	call    	#ic_read
;;$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$              
                cmp     	#07070h,ic_data_buffer(R8)          	
              	jz      	add_card_operation
;;-------------------------------------
error_card              
              	bic.b   	#ic_rst+ic_clk+ic_vcc+ic_data,&P1OUT 
              	mov.b     	#0FCh,&P5SEL                  		 
              	mov.b   	#LCDON+LCD4MUX+LCDP1,&LCDCTL             
              	call    	#show_clr                              
              	bis.b   	#f,&lcdmem+9				
              	bis.b   	#h,&lcdmem+8              	
              	bis     	#view_display_bit1,&system_flag1
              	bic     	#view_display_bit,&system_flag1
              	mov.b   	#03h,&information_delay              
                bic.b   	#ic_key_bit,&P1IFG              	
                eint
              	reti 
              	 
add_card_operation  
              	call    	#add_value_card 
		bis     	#view_display_bit,&system_flag1
              	bic     	#view_display_bit1,&system_flag1
              	mov.b     	#0Ah,&information_delay
              	clr.b   	&lcd_display_type               
                bic.b           #ic_key_bit,&P1IFG              	
              	eint    	
              	reti 
;;-------------------------------------               
add_value_card  
           	bic.b   	#ic_rst+ic_clk+ic_data+ic_vcc,&P1OUT 
            	add     	#64h,&water_remain1
            	adc     	&water_remain2
            	jc      	add_negative_bit_clr                   

            	bit     	#negative_water_1stbit,&system_flag1
            	jz      	add_negative_bit_clr
            	sub     	#64h,&water_negative1
            	subc    	#0h,&water_negative2
            	jmp     	add_water_deal_end            
add_negative_bit_clr
            	bic     	#negative_water_1stbit+negative_water_2ndbit,&system_flag1
            	clr     	&water_negative1
            	clr     	&water_negative2
add_water_deal_end  
            	ret 
;;---------------------            	
key_delay
             	mov     	#1000h,R9
key_delay1
             	dec     	R9
             	jnz     	key_delay1
             	ret
;;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ic_write	
	    	mov.b   #38h,command_byte         ;erase的命令字	
		call	#ic_command_mode
		call    #processing_256
		ret
		
ic_read
                mov.b   #030h,&command_byte
                mov.b   #030h,&command_address
                mov.b   #0FFh,&command_data
                call    #ic_command_mode
                call    #outgoing_main_data
                ret
;;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
;;复位程序
;;++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ic_reset        
	        bis.b   #ic_rst+ic_clk+ic_vcc,&P1DIR  
	        bic.b   #ic_data,&P1DIR
	        bic.b   #ic_rst+ic_clk,&P1OUT  
	        bis.b   #ic_vcc,&P1OUT
	        call    #delay_50us
	        bis.b   #ic_rst,&P1OUT                   
	        call    #delay_8us
	        bis.b   #ic_clk,P1OUT                    
	        call    #delay_50us
	        bic.b   #ic_clk,P1OUT                    
	        call    #delay_8us
	        bic.b   #ic_rst,&P1OUT              
	        mov.b   #32,&counter 
next_rst_bit
	        bis.b   #ic_clk,P1OUT
	        nop
	        nop
	        nop
	        bit.b   #ic_data,P1IN
	        jnz     rst_data_1
	        clrc
	        jmp     rst_data_deal        
rst_data_1
                setc
rst_data_deal   
	        rrc     R6 
                rrc     R5
                nop
                bic.b   #ic_clk,P1OUT
                dec.b   &counter
                jz      rst_data_deal_end
                call    #delay_8us
                jmp     next_rst_bit
rst_data_deal_end
                ret	
;;----------------------------------------------------
ic_command_mode
		bis.b   #ic_clk+ic_data,&P1DIR		
command_start   
		bic.b   #ic_clk,&P1OUT
		bis.b   #ic_data,&P1OUT
		call    #delay_8us
		bis.b   #ic_clk,&P1OUT
		call    #delay_8us
		bic.b   #ic_data,&P1OUT
		call    #delay_8us
		bic.b   #ic_clk,&P1OUT
		call    #delay_8us 
command_operation
		mov.b   &command_byte,&com_byte           
		call    #command_bit_transe
		mov.b   &command_address,&com_byte      
		call    #command_bit_transe
		mov.b   &command_data,&com_byte         
		call    #command_bit_transe
command_stop    
                bic.b   #ic_data,&P1OUT
                call    #delay_8us
                bis.b   #ic_clk,&P1OUT                
		call    #delay_8us 		
	        bis.b   #ic_data,&P1OUT     
	        call    #delay_8us 	   
		ret
;;----------------------------------------------------
command_bit_transe
		mov.b   #08h,&counter
command_bit_test
		bit.b   #01h,&com_byte
		jz      command_transe_0
		bis.b   #ic_data,&P1OUT
		jmp     bit_transe
command_transe_0
		bic.b   #ic_data,&P1OUT
bit_transe
		nop
		nop
		bis.b   #ic_clk,&P1OUT
		call    #delay_8us
		bic.b   #ic_clk,&P1OUT
		rrc.b   com_byte
		dec.b   &counter
		jnz     command_bit_test
		ret
;;----------------------------------------------------
outgoing_main_data
		bic.b   #ic_data,&P1DIR
		bic.b   #ic_clk,&P1OUT
		clr     R9
		call    #out_8data
		call    #out_last_data
		ret
;;-----------------------------------------------
out_8data
		mov.b   #08h,&counter
readout_8bit
		bis.b   #ic_clk,&P1OUT
		nop
		nop
		nop
		bit.b   #ic_data,&P1IN
		jz      out_bit_0
		bis.b   #80h,&com_byte
		jmp     out_bit_deal
out_bit_0
		bic.b   #80h,&com_byte
out_bit_deal
		bic.b   #ic_clk,&P1OUT
		dec.b   &counter
		jz      out_valid_end
		rrc.b   &com_byte
		nop
		nop
	 	jmp     readout_8bit
out_valid_end
		mov.b   &com_byte,ic_data_buffer(R9)
		inc.b   &command_address
		inc     R9
		cmp     #96,R9
		jnz     out_8data
		ret		
;;-----------------------------------------------
out_last_data
                mov.b   #08h,&counter
out_next_plus
		bis.b   #ic_clk,&P1OUT
		call    #delay_8us 	
		bic.b   #ic_clk,&P1OUT
		call    #delay_8us 	
		dec.b   &counter
		jnz     out_next_plus
		inc.b   &command_address
		tst.b   &command_address
		jnz     out_last_data
		bis.b   #ic_clk,&P1OUT
		call    #delay_8us 	
		bic.b   #ic_clk,&P1OUT
		call    #delay_8us 	

⌨️ 快捷键说明

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