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

📄 k3_three.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!   
         ; 
         ;**********************************************************
         ;
         ;LED display "50"
         ;set T=0 k3 first press down . T=1 k3 press down twice.                                                   
          ; clr r27      ;r27 is used to record k1 press down number 
                        ;accord to r27 value, m_min subroutine dispaly magnetic field trength  
         ;  clr r28      ;r28 is used to record k2 press down number 
                        ; tihis is useless
            clr r26     ;r26 is used to record TIME value
            clr r27     ;r27 is used to record MAGN value
            clr r17      ; r17 is used to record k1 status , r1=1 ,k1 press down
            clr r16      ; r16 is used to record k3 status , r3=1 k3 press down
  disp_350: rcall disp_50   
 m_wait_k1: sbic PIND,4
            rjmp m_k2_press
            rcall delay
            sbic PIND,4
            rjmp m_wait_k1                       
 compare:  nop
            inc r27
            cpi r27,4
            brne da20_90   ; k1 press down 4 times display "90" and cann't increase again
            rjmp m_k2_press
            ldi r17,1             
 da20_90:    rjmp display10_90  
m_k2_press:sbic PIND,5
            rjmp m_k4_press
            rcall delay
            sbic PIND,5            
            rjmp m_k2_press           
 min_comp:  nop
            dec r27
            cpi r27,-4
            brne disp10_80   ; k2 press down 4 times display "10" and cann't decrease again
            rjmp m_k4_press
            clr r17
 disp10_80:    rjmp display10_90  
 m_k4_press: sbic PIND,7
            rjmp k3_again
            rcall delay
            sbic PIND,7
            rjmp m_k4_press
            rcall change_disp
 k3_again:  sbic PIND,6
            rjmp k1_k2_press
            rcall delay
            sbic PIND,6
            rjmp k3_again
            rcall delay1
            rjmp disp_120
k1_k2_press:rjmp display10_90        ;  make a adjument if k1 or k2 is pressed  down                                                                                                              
 disp_120:  rcall display120            
 t_wait_k1: sbic PIND,4
            rjmp t_k2_press
            rcall delay
            sbic PIND,4
            rjmp t_wait_k1            
 tadd_comp:  nop
            inc r26
            cpi r26,12
            brne tad20_90   ; k1 press down 12 times display "480" and cann't increase again
            rjmp t_k2_press
 tad20_90:  rjmp tad060_480    
            rjmp t_wait_k1 
 t_k2_press:sbic PIND,5
            rjmp k4_press
            rcall delay
            sbic PIND,5
            rjmp t_k2_press
 tmin_comp: nop
            dec r26
            cpi r26,-3
            brne t030_480   ; k2 press down -3 times display "30" and cann't decrease again
            rjmp k4_press
  t030_480: rjmp tmin450_480              
  k4_press: sbic PIND,7
            rjmp k3_two
            rjmp change_disp        
   k3_two:  sbic PIND,6
            rjmp k1_k2_time
            rcall delay
            sbic PIND,6
            rjmp k3_two
            rcall delay1
            rjmp m_wait_k1
k1_k2_time: rjmp time30_480
tad060_480:cpi r26,-2
            brne tad090_480
            rcall tad_060 
            rcall  delay1
            sbic PIND,7    ;ask k4 press down ?
            rjmp t_wait_k1  
            rcall change_disp         
tad090_480:cpi r26,-1
            brne tad120_480
            rcall tad_120 
            rcall  delay1
            sbic PIND,7    ;ask k4 press down ?
            rjmp t_wait_k1  
            rcall change_disp          
tad120_480:cpi r26,0
            brne tad150_480
            rcall tad_120 
            rcall  delay1
            sbic PIND,7    ;ask k4 press down ?
            rjmp t_wait_k1  
            rcall change_disp 
 tad150_480:cpi r26,1
            brne tad180_480
            rcall tad_150 
            rcall  delay1
            sbic PIND,7    ;ask k4 press down ?
            rjmp t_wait_k1  
            rcall change_disp 
tad180_480:cpi r26,2
            brne tad210_480
            rcall tad_180 
            rcall  delay1
            sbic PIND,7    ;ask k4 press down ?
            rjmp t_wait_k1  
            rcall change_disp 
tad210_480:cpi r26,3
            brne tad240_480
            rcall tad_210 
            rcall  delay1
            sbic PIND,7    ;ask k4 press down ?
            rjmp t_wait_k1 
            rcall change_disp
 tad240_480:cpi r26,4
            brne tad270_480
            rcall tad_240 
            rcall  delay1
            sbic PIND,7    ;ask k4 press down ?
            rjmp t_wait_k1  
tad270_480:cpi r26,5
            brne tad300_480
            rcall tad_270 
            rcall  delay1
            sbic PIND,7    ;ask k4 press down ?
            rjmp t_wait_k1  
            rcall change_disp 
tad300_480:cpi r26,6
            brne tad330_480
            rcall tad_300 
            rcall  delay1
            sbic PIND,7    ;ask k4 press down ?
            rjmp t_wait_k1 
            rcall change_disp 
tad330_480:cpi r26,7
            brne tad360_480
            rcall tad_330 
            rcall  delay1
            sbic PIND,7    ;ask k4 press down ?
            rjmp t_wait_k1 
            rcall change_disp 
tad360_480:cpi r26,8
            brne tad390_480
            rcall tad_360 
            rcall  delay1
            sbic PIND,7    ;ask k4 press down ?
            rjmp t_wait_k1  
            rcall change_disp 
tad390_480:cpi r26,9
            brne tad420_480
            rcall tad_390 
            rcall  delay1
            sbic PIND,7    ;ask k4 press down ?
            rjmp t_wait_k1 
            rcall change_disp 
tad420_480:cpi r26,10
            brne tad450_480
            rcall tad_420 
            rcall  delay1
            sbic PIND,7    ;ask k4 press down ?
            rjmp t_wait_k1  
            rcall change_disp 
tad450_480:cpi r26,11
            brne tad480_480
            rcall tad_450 
            rcall  delay1
            sbic PIND,7    ;ask k4 press down ?
            rjmp t_wait_k1 
            rcall change_disp 
tad480_480:  rcall tad_450 
            rcall  delay
            sbic PIND,7    ;ask k4 press down ?
            rjmp t_wait_k1 
            rcall change_disp                                                                                                                   
time30_480: cpi r26,-3
            brne time60_480
            rcall tad_030 
            rcall  delay
            rjmp t_wait_k1
time60_480: cpi r26,-2
            brne time90_480
            rcall tad_060 
            rcall  delay                
            rjmp t_wait_k1
time90_480: cpi r26,-1
            brne time120_480
            rcall tad_090 
            rcall  delay                
            rjmp t_wait_k1
time120_480: cpi r26,0
            brne time150_480
            rcall tad_120 
            rcall  delay                
            rjmp t_wait_k1
time150_480: cpi r26,1
            brne time180_480
            rcall tad_150 
            rcall  delay                
            rjmp t_wait_k1
time180_480: cpi r26,2
            brne time210_480
            rcall tad_180 
            rcall  delay                
            rjmp t_wait_k1
time210_480: cpi r26,3
            brne time240_480
            rcall tad_210 
            rcall  delay                
            rjmp t_wait_k1
time240_480: cpi r26,4
            brne time270_480
            rcall tad_240 
            rcall  delay                
            rjmp t_wait_k1
time270_480: cpi r26,5
            brne time300_480
            rcall tad_270 
            rcall  delay                
            rjmp t_wait_k1
 time300_480: cpi r26,6
            brne time330_480
            rcall tad_300 
            rcall  delay                
            rjmp t_wait_k1
time330_480: cpi r26,7
            brne time360_480
            rcall tad_330 
            rcall  delay                
            rjmp t_wait_k1
time360_480: cpi r26,8
            brne time390_480
            rcall tad_360 
            rcall  delay                
            rjmp t_wait_k1
time390_480: cpi r26,9
            brne time420_480
            rcall tad_390 
            rcall  delay                
            rjmp t_wait_k1
time420_480: cpi r26,10
            brne time450_480
            rcall tad_420 
            rcall  delay                
            rjmp t_wait_k1
time450_480: cpi r26,11
            brne time480_480
            rcall tad_450 
            rcall  delay                
            rjmp t_wait_k1
time480_480:rcall tad_480 
            rcall  delay                
            rjmp t_wait_k1
tmin450_480:cpi r26,11
            brne tmin420_480
            rcall tad_450 
            rcall  delay1
            sbic PIND,7    ;ask k4 press down ?
            rjmp t_k2_press 
            rcall change_disp 
tmin420_480:cpi r26,10
            brne tmin390_480
            rcall tad_420 
            rcall  delay1
            sbic PIND,7    ;ask k4 press down ?
            rjmp t_k2_press 
            rcall change_disp 
tmin390_480:cpi r26,9
            brne tmin360_480
            rcall tad_390 
            rcall  delay1
            sbic PIND,7    ;ask k4 press down ?
            rjmp t_k2_press 
            rcall change_disp 
tmin360_480:cpi r26,8
            brne tmin330_480
            rcall tad_360 
            rcall  delay1
            sbic PIND,7    ;ask k4 press down ?
            rjmp t_k2_press 
            rcall change_disp 
tmin330_480:cpi r26,7
            brne tmin300_480
            rcall tad_330 
            rcall  delay1
            sbic PIND,7    ;ask k4 press down ?
            rjmp t_k2_press 
            rcall change_disp
tmin300_480:cpi r26,6
            rjmp t_k2_press
            ;brne tmin270_480
            rcall tad_300 
            rcall  delay1
            sbic PIND,7    ;ask k4 press down ?
             
            rcall change_disp 

  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
 ;******************************************************************************
 ;
 ; These subroutines  are used to increase magnetic filed tength "20--90"
;----------------------------------------------
 display10_90: cpi r27,-4
              brne display20_90
              rcall disp_10                                                  
              rcall  delay1
              sbic PIND,7 
              rjmp c10_90  
              rjmp d10_90			
      c10_90: cpi r17,0
              breq k2_10_90    
              rjmp m_wait_k1
      k2_10_90: rjmp m_k2_press  
      d10_90: rcall delay
              sbic PIND,7
              rjmp display10_90
              rcall change_disp
display20_90: cpi r27,-3
              brne display30_90
              rcall disp_20                                                  
              rcall  delay1
              sbic PIND,7 
              rjmp c20_90  
              rjmp d20_90			
      c20_90: cpi r17,0
              breq k2_20_90    
              rjmp m_wait_k1
      k2_20_90: rjmp m_k2_press  
      d20_90: rcall delay
              sbic PIND,7
              rjmp display20_90
              rcall change_disp
display30_90: cpi r27,-2
              brne display40_90
              rcall disp_30                                                  
              rcall  delay1
              sbic PIND,7 
              rjmp c30_90  
              rjmp d30_90			
      c30_90: cpi r17,0
              breq k2_30_90    
              rjmp m_wait_k1
      k2_30_90: rjmp m_k2_press  
      d30_90: rcall delay
              sbic PIND,7
              rjmp display30_90
              rcall change_disp
display40_90: cpi r27,-1
              brne display50_90
              rcall disp_40                                                  
              rcall  delay1
              sbic PIND,7 
              rjmp c40_90  
              rjmp d40_90			
      c40_90: cpi r17,0
              breq k2_40_90    
              rjmp m_wait_k1
      k2_40_90: rjmp m_k2_press  
      d40_90: rcall delay
              sbic PIND,7
              rjmp display40_90
              rcall change_disp 
display50_90: cpi r27,0
              brne display60_90
              rcall disp_50                                                  
              rcall  delay1
              sbic PIND,7 
              rjmp c50_90  
              rjmp d50_90			
      c50_90: cpi r17,0
              breq k2_50_90    
              rjmp m_wait_k1
      k2_50_90: rjmp m_k2_press  
      d50_90: rcall delay
              sbic PIND,7
              rjmp display50_90
              rcall change_disp 
display60_90: cpi r27,1
              brne display70_90
              rcall disp_60                                                  
              rcall  delay1
              sbic PIND,7 
              rjmp c60_90  
              rjmp d60_90			
      c60_90: cpi r17,0
              breq k2_60_90    
              rjmp m_wait_k1

⌨️ 快捷键说明

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