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

📄 dacheng.asm

📁 串口通信 频率测量 EEPROM读写程序
💻 ASM
📖 第 1 页 / 共 2 页
字号:
       
          .include"c:\mydocu~1\tmin.asm"
          .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 "50120"
         ;
 display:rcall disp_50
         rcall display120                
       k3:sbic PIND,6
          rjmp k4
          rcall delay
          sbic PIND,6
          rjmp k3
          rcall delay1
          rjmp disp_350
       k4:sbic PIND,7
          rjmp display
          rcall delay
          sbic PIND,7
          rjmp k4
          rcall delay1
    cd:   rcall  change_disp
          rcall pwm_output
          rcall timer_over
          rjmp cd         
         ;
         ;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
            clr r27                     
  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 d20_90   ; k1 press down 4 times display "90" and cann't increase again
            rjmp m_k2_press
 d20_90:    rjmp display20_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
 disp10_80:    rjmp min10_80  
 m_k4_press: sbic PIND,7
            rjmp k3_again
            rcall delay
            sbic PIND,7
            rjmp m_k4_press
            rcall change_disp
            rjmp cd
 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 kn10_90        ;  make a adjument if k1 or k2 is pressed  down
display20_90:cpi r27,-3
              brne disp_30_90
              rcall disp_20 
              rcall  delay1
              sbic PIND,7    ;ask k4 press down ?
              rjmp m_k2_press  
              rcall change_disp
              rjmp cd
disp_30_90:   cpi r27,-2
              brne disp_40_90
              rcall disp_30 
              rcall  delay1
              sbic PIND,7    ;ask k4 press down ?
              rjmp m_k2_press  
              rcall change_disp
               rjmp cd 
disp_40_90:   cpi r27,-1
              brne disp_50_50
              rcall disp_40 
              rcall  delay1
              sbic PIND,7    ;ask k4 press down ?
              rjmp m_k2_press  
              rcall change_disp
               rjmp cd
disp_50_50: cpi r27,0
              brne disp_50_90
              rcall disp_50 
              rcall  delay1
              sbic PIND,7    ;ask k4 press down ?
              rjmp m_k2_press  
              rcall change_disp
               rjmp cd
  disp_50_90:   cpi r27,1
              brne disp_60_90
              rcall disp_60 
              rcall  delay1
              sbic PIND,7    ;ask k4 press down ?
              rjmp m_wait_k1  
              rcall change_disp
               rjmp cd
  disp_60_90:   cpi r27,2
              brne disp_70_90
              rcall disp_70
               rcall  delay1
              sbic PIND,7    ;ask k4 press down ?
              rjmp m_wait_k1  
              rcall change_disp
               rjmp cd
  disp_70_90:   cpi r27,3
              brne disp_80_90
              rcall disp_80
               rcall  delay1 
              sbic PIND,7    ;ask k4 press down ?
             rjmp m_wait_k1 
              rcall change_disp 
               rjmp cd
  disp_80_90: rcall disp_90
               rcall  delay1
              sbic PIND,7    ;ask k4 press down ?
              rjmp m_wait_k1                        
             rcall change_disp
              rjmp cd                            
  min10_80:   cpi r27,3
              brne min10_70
              rcall disp_80 
              rcall  delay1
              sbic PIND,7    ;ask k4 press down ?
              rjmp m_k2_press  
              rcall change_disp 
              rjmp cd  
 min10_70:    cpi r27,2
              brne min10_60
              rcall disp_70 
              rcall  delay1
              sbic PIND,7    ;ask k4 press down ?
              rjmp m_k2_press  
              rcall change_disp 
              rjmp cd 
 min10_60:   cpi r27,1
              brne min10_50
              rcall disp_60 
              rcall  delay1
              sbic PIND,7    ;ask k4 press down ?
              rjmp m_k2_press  
              rcall change_disp 
              rjmp cd 
 min10_50:   cpi r27,0
              brne min10_40
              rcall disp_50 
              rcall  delay1
              sbic PIND,7    ;ask k4 press down ?
              rjmp m_k2_press  
              rcall change_disp
              rjmp cd 
 min10_40:   cpi r27,-1
              brne min10_30
              rcall disp_40 
              rcall  delay1
              sbic PIND,7    ;ask k4 press down ?
              rjmp m_k2_press  
              rcall change_disp
              rjmp cd 
 min10_30:   cpi r27,-2
              brne min10_20
              rcall disp_30 
              rcall  delay1
              sbic PIND,7    ;ask k4 press down ?
              rjmp m_k2_press  
              rcall change_disp
              rjmp cd  
 min10_20:   cpi r27,-3
              brne min10_10
              rcall disp_20 
              rcall  delay1
              sbic PIND,7    ;ask k4 press down ?
              rjmp m_k2_press  
              rcall change_disp
              rjmp cd  
 min10_10: rcall disp_10 
              rcall  delay1
              sbic PIND,7    ;ask k4 press down ?
              rjmp m_k2_press  
              rcall change_disp 
              rjmp cd                                                                                                                    
 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
            rjmp cd          
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 
            rjmp cd          
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
            rjmp cd  
 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 
            rjmp cd 
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
            rjmp cd 
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
            rjmp cd 
 tad240_480:cpi r26,4
            brne tad270_480
            rcall tad_240 
            rcall  delay1
            sbic PIND,7    ;ask k4 press down ?
            rjmp t_wait_k1
            rcall change_disp
            rjmp cd   
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 
            rjmp cd 
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 

⌨️ 快捷键说明

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