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

📄 main.lis

📁 1602lcd显示频率计 通过了proteus仿真
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 00E4 81E0              ldi R24,1
 00E6 88BB              out 0x18,R24
 00E8                   .dbline 79
 00E8           ;  DDRB  = 0xFE;
 00E8 8EEF              ldi R24,254
 00EA 87BB              out 0x17,R24
 00EC                   .dbline 80
 00EC           ;  PORTC = 0x00; //m103 output only
 00EC 25BA              out 0x15,R2
 00EE                   .dbline 81
 00EE           ;  DDRC  = 0x01;
 00EE 81E0              ldi R24,1
 00F0 84BB              out 0x14,R24
 00F2                   .dbline 82
 00F2           ;  PORTD = 0xff;
 00F2 8FEF              ldi R24,255
 00F4 82BB              out 0x12,R24
 00F6                   .dbline 83
 00F6           ;  DDRD  = 0x00;
 00F6 21BA              out 0x11,R2
 00F8                   .dbline 85
 00F8           ;  
 00F8           ;  lcd_data_port=0xff;
 00F8 82BB              out 0x12,R24
 00FA                   .dbline 86
 00FA           ;  lcd_data_ddr=0xff;
 00FA 81BB              out 0x11,R24
 00FC                   .dbline 87
 00FC           ;  lcd_control_port=0x07;
 00FC 87E0              ldi R24,7
 00FE 8BBB              out 0x1b,R24
 0100                   .dbline 88
 0100           ;  lcd_control_ddr=0x07;
 0100 8ABB              out 0x1a,R24
 0102                   .dbline -2
 0102           L14:
 0102                   .dbline 0 ; func end
 0102 0895              ret
 0104                   .dbend
 0104                   .dbfunc e timer1_init _timer1_init fV
                        .even
 0104           _timer1_init::
 0104                   .dbline -1
 0104                   .dbline 96
 0104           ; }
 0104           ; 
 0104           ; //TIMER1 initialize - prescale:64
 0104           ; // WGM: 0) Normal, TOP=0xFFFF
 0104           ; // desired value: 1Hz
 0104           ; // actual value:  1.000Hz (0.0%)
 0104           ; void timer1_init(void)
 0104           ; {
 0104                   .dbline 97
 0104           ;  TCCR1B = 0x00; //stop
 0104 2224              clr R2
 0106 2EBC              out 0x2e,R2
 0108                   .dbline 98
 0108           ;  TCNT1H = 0x0B; //setup
 0108 8BE0              ldi R24,11
 010A 8DBD              out 0x2d,R24
 010C                   .dbline 99
 010C           ;  TCNT1L = 0xDC;
 010C 8CED              ldi R24,220
 010E 8CBD              out 0x2c,R24
 0110                   .dbline 101
 0110           ; 
 0110           ;  TCCR1A = 0x00;
 0110 2FBC              out 0x2f,R2
 0112                   .dbline 102
 0112           ;  TCCR1B = 0x03; //start Timer
 0112 83E0              ldi R24,3
 0114 8EBD              out 0x2e,R24
 0116                   .dbline -2
 0116           L15:
 0116                   .dbline 0 ; func end
 0116 0895              ret
 0118                   .dbend
 0118                   .dbfunc e init_devices _init_devices fV
                        .even
 0118           _init_devices::
 0118                   .dbline -1
 0118                   .dbline 106
 0118           ; }
 0118           ; 
 0118           ; void init_devices(void)
 0118           ; {
 0118                   .dbline 108
 0118           ;  //stop errant interrupts until set up
 0118           ;  CLI(); //disable all interrupts
 0118 F894              cli
 011A                   .dbline 109
 011A           ;  port_init();
 011A E0DF              xcall _port_init
 011C                   .dbline 110
 011C           ;  timer1_init();
 011C F3DF              xcall _timer1_init
 011E                   .dbline 111
 011E           ;  TCCR0=0x06;
 011E 86E0              ldi R24,6
 0120 83BF              out 0x33,R24
 0122                   .dbline 112
 0122           ;  TCNT0=0x00;
 0122 2224              clr R2
 0124 22BE              out 0x32,R2
 0126                   .dbline 114
 0126           ;  
 0126           ;  count=0x00;
 0126 3324              clr R3
 0128 30920200          sts _count+1,R3
 012C 20920100          sts _count,R2
 0130                   .dbline 115
 0130           ;  tim0_ovf_count=0x00;
 0130 20920000          sts _tim0_ovf_count,R2
 0134                   .dbline 116
 0134           ;  timer1_init();
 0134 E7DF              xcall _timer1_init
 0136                   .dbline 118
 0136           ;  
 0136           ;  lcd_init();
 0136 0E940000          xcall _lcd_init
 013A                   .dbline 120
 013A           ;  
 013A           ;  MCUCR = 0x00;
 013A 2224              clr R2
 013C 25BE              out 0x35,R2
 013E                   .dbline 121
 013E           ;  GICR  = 0x00;
 013E 2BBE              out 0x3b,R2
 0140                   .dbline 122
 0140           ;  TIMSK = 0x05; //timer interrupt sources
 0140 85E0              ldi R24,5
 0142 89BF              out 0x39,R24
 0144                   .dbline 123
 0144           ;  SEI(); //re-enable interrupts
 0144 7894              sei
 0146                   .dbline -2
 0146           L16:
 0146                   .dbline 0 ; func end
 0146 0895              ret
 0148                   .dbend
                        .area vector(rom, abs)
                        .org 36
 0024 0C94A400          jmp _timer0_ovf_isr
                        .area text(rom, con, rel)
 0148                   .dbfile F:\avr单片机学习\我自编程序\1602lcd\main.c
 0148                   .dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
                        .even
 0148           _timer0_ovf_isr::
 0148 2A92              st -y,R2
 014A 8A93              st -y,R24
 014C 9A93              st -y,R25
 014E 2FB6              in R2,0x3f
 0150 2A92              st -y,R2
 0152                   .dbline -1
 0152                   .dbline 128
 0152           ; }
 0152           ; 
 0152           ; #pragma interrupt_handler timer0_ovf_isr:iv_TIM0_OVF
 0152           ; void timer0_ovf_isr(void)
 0152           ; {
 0152                   .dbline 129
 0152           ;  TCNT0 = 0x00 /*INVALID SETTING*/; //reload counter value
 0152 2224              clr R2
 0154 22BE              out 0x32,R2
 0156                   .dbline 130
 0156           ;  tim0_ovf_count++;
 0156 80910000          lds R24,_tim0_ovf_count
 015A 8F5F              subi R24,255    ; addi 1
 015C 80930000          sts _tim0_ovf_count,R24
 0160                   .dbline -2
 0160           L17:
 0160                   .dbline 0 ; func end
 0160 2990              ld R2,y+
 0162 2FBE              out 0x3f,R2
 0164 9991              ld R25,y+
 0166 8991              ld R24,y+
 0168 2990              ld R2,y+
 016A 1895              reti
 016C                   .dbend
                        .area vector(rom, abs)
                        .org 32
 0020 0C94B600          jmp _timer1_ovf_isr
                        .area text(rom, con, rel)
 016C                   .dbfile F:\avr单片机学习\我自编程序\1602lcd\main.c
 016C                   .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
                        .even
 016C           _timer1_ovf_isr::
 016C 2A92              st -y,R2
 016E 3A92              st -y,R3
 0170 4A92              st -y,R4
 0172 5A92              st -y,R5
 0174 0A93              st -y,R16
 0176 1A93              st -y,R17
 0178 2A93              st -y,R18
 017A 3A93              st -y,R19
 017C 8A93              st -y,R24
 017E 2FB6              in R2,0x3f
 0180 2A92              st -y,R2
 0182                   .dbline -1
 0182                   .dbline 137
 0182           ; }
 0182           ; 
 0182           ; 
 0182           ; 
 0182           ; #pragma interrupt_handler timer1_ovf_isr:iv_TIM1_OVF
 0182           ; void timer1_ovf_isr(void)
 0182           ; {
 0182                   .dbline 139
 0182           ;  //TIMER1 has overflowed
 0182           ;  TCNT1H = 0x0B; //reload counter high value
 0182 8BE0              ldi R24,11
 0184 8DBD              out 0x2d,R24
 0186                   .dbline 140
 0186           ;  TCNT1L = 0xDC; //reload counter low value
 0186 8CED              ldi R24,220
 0188 8CBD              out 0x2c,R24
 018A                   .dbline 141
 018A           ;  count=tim0_ovf_count*256+TCNT0;
 018A 20910000          lds R18,_tim0_ovf_count
 018E 3327              clr R19
 0190 00E0              ldi R16,256
 0192 11E0              ldi R17,1
 0194 0E940000          xcall empy16s
 0198 1801              movw R2,R16
 019A 42B6              in R4,0x32
 019C 5524              clr R5
 019E 240C              add R2,R4
 01A0 351C              adc R3,R5
 01A2 30920200          sts _count+1,R3
 01A6 20920100          sts _count,R2
 01AA                   .dbline 142
 01AA           ;  tim0_ovf_count=0x00;
 01AA 2224              clr R2
 01AC 20920000          sts _tim0_ovf_count,R2
 01B0                   .dbline 143
 01B0           ;  TCNT0=0x00;
 01B0 22BE              out 0x32,R2
 01B2                   .dbline -2
 01B2           L18:
 01B2                   .dbline 0 ; func end
 01B2 2990              ld R2,y+
 01B4 2FBE              out 0x3f,R2
 01B6 8991              ld R24,y+
 01B8 3991              ld R19,y+
 01BA 2991              ld R18,y+
 01BC 1991              ld R17,y+
 01BE 0991              ld R16,y+
 01C0 5990              ld R5,y+
 01C2 4990              ld R4,y+
 01C4 3990              ld R3,y+
 01C6 2990              ld R2,y+
 01C8 1895              reti
 01CA                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile F:\avr单片机学习\我自编程序\1602lcd\main.c
 0000           _tim0_ovf_count::
 0000                   .blkb 1
 0001                   .dbsym e tim0_ovf_count _tim0_ovf_count c
 0001           _count::
 0001                   .blkb 2
 0003                   .dbsym e count _count i
 0003           ; }

⌨️ 快捷键说明

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