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

📄 tim_com2.asm

📁 串口通信 频率测量 EEPROM读写程序
💻 ASM
📖 第 1 页 / 共 2 页
字号:
          
          
          .include "c:\appnotes\2333def.inc"
          .org $000
           rjmp main         
           .org $007
           rjmp SPI_TXC               
          .org $00d
     MAIN:;********************************************************
          ; 
          ; initialize MCU system
          ;
           ser r16
           out DDRC,r16 ;portc is output mode and turn off all LEDS
           ldi r17,$df
           out SPL,r17         
           ldi r25,$00
           out SREG,r25 ;Disnable globle interrupt                      
           ldi r25,0b00001100
           out MCUCR,r25; set INT! low level trigger        
           ldi r20,$00
           out ADCSR,r20    ;Disnable ADC     
           ldi r17,$08
           out WDTCR,r17;enable wacthdog
           wdr          ;reset wachdog                                     
           sbi DDRB,3    ;set MOSI(PB.5) output mode whwn SPI is master.
           sbi DDRB,5    ;set SCK (PB.7) output mode when SPI is master
           sbi DDRB,2    ;set SS output mode so that this byte cann't
                         ;influence SPI master work mode .
           ldi r17,0b11111100
           out SPCR,r17  ;set SPIE,SPE,MSTR,CPOL,CPHA ,reset the others
           ldi r25,$80  
           out GIMSK,r25 ;enable INT!   
         ; 
 
;-----------------------------------------------------------------------
                                                                                                    
  md:       clr r26          ;r26 is used to record time value 
            clr r27          ;r27 is used to record magnetic field trength               
 t_wait_k1: rcall t_leddisp 
            sbic PIND,4
            rjmp t_k2_press
            rcall delay
            sbic PIND,4
            rjmp t_wait_k1                       
 t_compare:   inc r26
            cpi r26,13
            brpl taddset_r26 ;k1 press down 4 times display "90" and cann't increase again
            rcall t_leddisp
            rcall delay1
            sbic PIND,7            
            rjmp t_wait_k1
            rcall delay
            sbic PIND,7
            rjmp t_wait_k1       
            rcall change_disp
 taddset_r26: ldi r26,12
t_k2_press:sbic PIND,5
            rjmp t_k4_press
            rcall delay
            sbic PIND,5            
            rjmp t_k2_press                 
 tmin_comp:  nop
            dec r26
            cpi r26,-3
            brmi tminset_r26 ; k2 press down 4 times display "10" and cann't decrease again
            rcall t_leddisp
            rcall delay1
            sbic PIND,7            
            rjmp t_k2_press 
            rcall delay
            sbic PIND,7
            rjmp t_k2_press       
            rcall change_disp
tminset_r26: ldi r26,-3              
 t_k4_press: sbic PIND,7
            rjmp k3_again
            rcall delay
            sbic PIND,7
            rjmp t_k4_press
            rcall change_disp
          ;  rjmp cd
 k3_again:  ;sbic PIND,6                       
            rjmp t_wait_k1 
SPI_TXC:sbi SPCR,4
           reti 
     delay:ldi r21,$01
        d2:ldi r22,$01                    
        d1:ldi r23,$0ff
        d0:dec r23
           wdr           
           brne d0            
           dec r22                      
           brne d1
           dec r21         
           brne d2
           ret
     delay1:ldi r21,$08
        d21:ldi r22,$0ff                    
        d11:ldi r23,$0ff
        d01:dec r23
           wdr           
           brne d01            
           dec r22                      
           brne d11
           dec r21         
           brne d21   
           ret     
;------------------------------------------------------                   
  t_leddisp: cpi r26,-3
             brne time_60 
   time_30 : nop
            ;----------------------
             ldi  r20,$00       ;  r20 is content of display word          
             out SPDR , r20 
             ldi r17,0b0000100  ; display byte PC.2 
             out PORTC,r17       
             rcall delay
             rcall turn_off
            ; ---------------------display PC.2 first byte of time value          
             ldi r20 ,$4f       
             out SPDR , r20 
             ldi r17,0b00001000  ; display byte PC.3 
             out PORTC,r17       ;PC.3 output 1 ,
             rcall delay
             rcall turn_off
             ;-------------------display PC.3 second byte of time value
              rcall b4_d0   
              ret
            ;-------------------- ; PC.4 display "0" 
    time_60: cpi r26,-2
             brne time_90 
            ;----------------------
             ldi  r20,$00                 
             out SPDR , r20 
             ldi r17,0b0000100  ; display byte PC.2 
             out PORTC,r17       
             rcall delay
             rcall turn_off
            ; ---------------------display PC.2 first byte of time value          
             ldi r20 ,$7d       
             out SPDR , r20 
             ldi r17,0b00001000  ; display byte PC.3 
             out PORTC,r17       
             rcall delay
             rcall turn_off
             ;-------------------display PC.3 second byte of time value
              rcall b4_d0   
              ret
            ;-------------------- ; PC.4 display "0" 
 time_90: cpi r26,-1
             brne time_120 
            ;----------------------
             ldi  r20,$00                 
             out SPDR , r20 
             ldi r17,0b0000100  ; display byte PC.2 
             out PORTC,r17       
             rcall delay
             rcall turn_off
            ; ---------------------display PC.2 first byte of time value          
             ldi r20 ,$6f       
             out SPDR , r20 
             ldi r17,0b00001000  ; display byte PC.3 
             out PORTC,r17       
             rcall delay
             rcall turn_off
             ;-------------------display PC.3 second byte of time value
              rcall b4_d0   
              ret
            ;-------------------- ; PC.4 display "0" 
 time_120: cpi r26,0
             brne time_150 
            ;----------------------
             ldi  r20,$06                 
             out SPDR , r20 
             ldi r17,0b0000100  ; display byte PC.2 
             out PORTC,r17       
             rcall delay
             rcall turn_off
            ; ---------------------display PC.2 first byte of time value          
             ldi r20 ,$5b       
             out SPDR , r20 
             ldi r17,0b00001000  ; display byte PC.3 
             out PORTC,r17       
             rcall delay
             rcall turn_off
             ;-------------------display PC.3 second byte of time value
              rcall b4_d0   
              ret
            ;-------------------- ; PC.4 display "0"
 time_150: cpi r26,1
             brne time_180 
            ;----------------------
             ldi  r20,$06                 
             out SPDR , r20 
             ldi r17,0b0000100  ; display byte PC.2 
             out PORTC,r17       
             rcall delay
             rcall turn_off
            ; ---------------------display PC.2 first byte of time value          
             ldi r20 ,$6d       
             out SPDR , r20 
             ldi r17,0b00001000  ; display byte PC.3 
             out PORTC,r17       
             rcall delay
             rcall turn_off
             ;-------------------display PC.3 second byte of time value
              rcall b4_d0   
              ret
            ;-------------------- ; PC.4 display "0"  
 time_180: cpi r26,2
             brne time_210 
            ;----------------------
             ldi  r20,$06                 
             out SPDR , r20 
             ldi r17,0b0000100  ; display byte PC.2 
             out PORTC,r17       
             rcall delay
             rcall turn_off
            ; ---------------------display PC.2 first byte of time value          
             ldi r20 ,$7f       

⌨️ 快捷键说明

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