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

📄 m_add.asm

📁 串口通信 频率测量 EEPROM读写程序
💻 ASM
字号:
       .include "c:\appnotes\2333def.inc"
          .org $000
           rjmp main                                
          .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!   
        ;***********************************************************
            clr r27      ;r27 is used to record k1 press down number
  compare:  cpi r27,4
            brne disp   ; k1 press down 4 times display "90" and cann't increase again
            rjmp escape 
     disp : rcall turn_off
   disp_60: rcall display_6
            rcall dispbyte_0            
           ; rcall trans_wait                                           
            rcall delay
            rcall turn_off                                                         
            rcall display_0 
            rcall dispbyte_1      
           ; rcall trans_wait                        
            rcall delay
            rcall turn_off                 
            ldi r27,1
            sbis PIND,7
            rjmp escape
 m_wait_k6: sbic PIND,4
            rjmp disp_60
            rcall delay
            sbic PIND,4
            rjmp m_wait_k6
   disp_70: rcall display_7
            rcall dispbyte_0            
            ;rcall trans_wait                                           
            rcall delay
            rcall turn_off                                                         
            rcall display_0 
            rcall dispbyte_1      
           ; rcall trans_wait                        
            rcall delay
            rcall turn_off                 
            ldi r27,2
            sbis PIND,7
            rjmp escape                  
 m_wait_k7: sbic PIND,4
            rjmp disp_70
            rcall delay
            sbic PIND,4
            rjmp m_wait_k7
    disp_80:rcall display_8
            rcall dispbyte_0            
            ;rcall trans_wait                                           
            rcall delay
            rcall turn_off                                                         
            rcall display_0 
            rcall dispbyte_1      
            ;rcall trans_wait                        
            rcall delay
            rcall turn_off                 
            ldi r27,3
            sbis PIND,7
            rjmp escape             
 m_wait_k8: sbic PIND,4
            rjmp disp_80
            rcall delay
            sbic PIND,4
            rjmp m_wait_k8                
   disp_90: rcall display_9
            rcall dispbyte_0            
            ;rcall trans_wait                                           
            rcall delay
            rcall turn_off                                                         
            rcall display_0 
            rcall dispbyte_1      
            ;rcall trans_wait                        
            rcall delay
            rcall turn_off                 
            ldi r27,4
            sbis PIND,7
            rjmp escape     
 m_wait_k9: sbic PIND,4
            rjmp disp_90
            rcall delay
            sbic PIND,4
            rjmp m_wait_k9
            rjmp escape                                       
  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           
  seg_code:.db $3f,$06,$5b,$4f,$66,$6d,$7d,$07
           .db $7f,$6f,$77,$7c,$39,$5e,$79,$71 
 display_0:ldi r21,$3f            
           out SPDR , r21 
           ret
 display_1:ldi r21,$06
           out SPDR , r21 
           ret
 display_2:ldi r21,$5b
           out SPDR , r21 
           ret 
 display_3:ldi r21,$4f
           out SPDR , r21 
           ret
 display_4:ldi r21,$66
           out SPDR , r21 
           ret
 display_5:ldi r21,$6d
           out SPDR , r21 
           ret
 display_6:ldi r21,$7d
           out SPDR , r21 
           ret
 display_7:ldi r21,$07
           out SPDR , r21 
           ret
 display_8:ldi r21,$7f
           out SPDR , r21 
           ret
 display_9:ldi r21,$6f
           out SPDR , r21 
           ret
 turn_off: ser r16
           out DDRC,r16
           ldi r17,0b0000000
           out PORTC,r17  
           ret
dispbyte_0:ldi r17,0b00000001
           out PORTC,r17 
           ret
dispbyte_1:ldi r17,0b00000010
           out PORTC,r17 
           ret
dispbyte_2:ldi r17,0b00000100
           out PORTC,r17 
           ret
dispbyte_3:ldi r17,0b00001000
           out PORTC,r17 
           ret
dispbyte_4:ldi r17,0b00010000
           out PORTC,r17 
           ret
trans_wait:sbis SPSR,7
           rjmp trans_wait             
           ret

escape: .exit

⌨️ 快捷键说明

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