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

📄 display.lis

📁 avr单片机atmega8系列led显示测试程序
💻 LIS
字号:
                        .module display.c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\job\avrtest\web\example\display\display.c
 0000                   .dbfunc e timer1_init _timer1_init fV
                        .even
 0000           _timer1_init::
 0000                   .dbline -1
 0000                   .dbline 13
 0000           ; //ICC-AVR application builder : 2005-2-24 23:07:53
 0000           ; // Target : M8
 0000           ; // Crystal: 8.0000Mhz
 0000           ; 
 0000           ; #include <iom8v.h>
 0000           ; #include <macros.h>
 0000           ; 
 0000           ; unsigned char  n;
 0000           ; 
 0000           ; //TIMER1 initialisation - prescale:256
 0000           ; // actual value:  1.000Hz (0.0%)
 0000           ; void timer1_init(void)
 0000           ; {
 0000                   .dbline 14
 0000           ;  TCCR1B = 0x00; //stop
 0000 2224              clr R2
 0002 2EBC              out 0x2e,R2
 0004                   .dbline 15
 0004           ;  TCNT1H = 0x85; //setup
 0004 85E8              ldi R24,133
 0006 8DBD              out 0x2d,R24
 0008                   .dbline 16
 0008           ;  TCNT1L = 0xEE;
 0008 8EEE              ldi R24,238
 000A 8CBD              out 0x2c,R24
 000C                   .dbline 17
 000C           ;  OCR1AH = 0x7A;
 000C 8AE7              ldi R24,122
 000E 8BBD              out 0x2b,R24
 0010                   .dbline 18
 0010           ;  OCR1AL = 0x12;
 0010 82E1              ldi R24,18
 0012 8ABD              out 0x2a,R24
 0014                   .dbline 19
 0014           ;  OCR1BH = 0x7A;
 0014 8AE7              ldi R24,122
 0016 89BD              out 0x29,R24
 0018                   .dbline 20
 0018           ;  OCR1BL = 0x12;
 0018 82E1              ldi R24,18
 001A 88BD              out 0x28,R24
 001C                   .dbline 21
 001C           ;  ICR1H  = 0x7A;
 001C 8AE7              ldi R24,122
 001E 87BD              out 0x27,R24
 0020                   .dbline 22
 0020           ;  ICR1L  = 0x12;
 0020 82E1              ldi R24,18
 0022 86BD              out 0x26,R24
 0024                   .dbline 23
 0024           ;  TCCR1A = 0x00;
 0024 2FBC              out 0x2f,R2
 0026                   .dbline 24
 0026           ;  TCCR1B = 0x04; //start Timer
 0026 84E0              ldi R24,4
 0028 8EBD              out 0x2e,R24
 002A                   .dbline -2
 002A                   .dbline 25
 002A           ; }
 002A           L1:
 002A                   .dbline 0 ; func end
 002A 0895              ret
 002C                   .dbend
                        .area vector(rom, abs)
                        .org 16
 0010 16C0              rjmp _timer1_ovf_isr
                        .area text(rom, con, rel)
 002C                   .dbfile D:\job\avrtest\web\example\display\display.c
 002C                   .dbfunc e timer1_ovf_isr _timer1_ovf_isr fV
 002C           ;              i -> R16
 002C           ;             ch -> R18
                        .even
 002C           _timer1_ovf_isr::
 002C 2A92              st -y,R2
 002E 0A93              st -y,R16
 0030 2A93              st -y,R18
 0032 8A93              st -y,R24
 0034 9A93              st -y,R25
 0036 2FB6              in R2,0x3f
 0038 2A92              st -y,R2
 003A                   .dbline -1
 003A                   .dbline 30
 003A           ; 
 003A           ; //  timer1 中断 ,1秒
 003A           ; #pragma interrupt_handler timer1_ovf_isr:9
 003A           ; void timer1_ovf_isr(void)
 003A           ; {
 003A                   .dbline 33
 003A           ;     unsigned char  ch,i;
 003A           ; 
 003A           ;     TCNT1H = 0x85; //reload counter high value
 003A 85E8              ldi R24,133
 003C 8DBD              out 0x2d,R24
 003E                   .dbline 34
 003E           ;     TCNT1L = 0xEE; //reload counter low value
 003E 8EEE              ldi R24,238
 0040 8CBD              out 0x2c,R24
 0042                   .dbline 36
 0042           ; 
 0042           ;     if(++n == 10) n = 0;
 0042 80910000          lds R24,_n
 0046 8F5F              subi R24,255    ; addi 1
 0048 282E              mov R2,R24
 004A 20920000          sts _n,R2
 004E 8A30              cpi R24,10
 0050 19F4              brne L3
 0052                   .dbline 36
 0052 2224              clr R2
 0054 20920000          sts _n,R2
 0058           L3:
 0058                   .dbline 37
 0058           ;     ch = n | 0x70;
 0058 20910000          lds R18,_n
 005C 2067              ori R18,112
 005E                   .dbline 38
 005E           ;     PORTB &= ~0x01;      //  消隐
 005E C098              cbi 0x18,0
 0060                   .dbline 39
 0060           ;     PORTD &= ~0x40;      //  CLK
 0060 9698              cbi 0x12,6
 0062                   .dbline 40
 0062 0027              clr R16
 0064 0AC0              rjmp L8
 0066           L5:
 0066                   .dbline 40
 0066           ;     for(i=0; i<8; i++){
 0066                   .dbline 41
 0066           ;         if(ch & 0x80)
 0066 27FF              sbrs R18,7
 0068 02C0              rjmp L9
 006A                   .dbline 42
 006A           ;             PORTD |= 0x80;
 006A 979A              sbi 0x12,7
 006C 01C0              rjmp L10
 006E           L9:
 006E                   .dbline 44
 006E           ;         else
 006E           ;             PORTD &= ~0x80;
 006E 9798              cbi 0x12,7
 0070           L10:
 0070                   .dbline 45
 0070 220F              lsl R18
 0072                   .dbline 46
 0072 969A              sbi 0x12,6
 0074                   .dbline 47
 0074 0000              nop
 0076                   .dbline 48
 0076 9698              cbi 0x12,6
 0078                   .dbline 49
 0078           L6:
 0078                   .dbline 40
 0078 0395              inc R16
 007A           L8:
 007A                   .dbline 40
 007A 0830              cpi R16,8
 007C A0F3              brlo L5
 007E                   .dbline 50
 007E           ;         ch <<= 1;
 007E           ;         PORTD |= 0x40;
 007E           ;         asm("nop");
 007E           ;         PORTD &= ~0x40;
 007E           ;     }
 007E           ;     PORTB |= 0x01;      //  显示
 007E C09A              sbi 0x18,0
 0080                   .dbline -2
 0080                   .dbline 51
 0080           ; }
 0080           L2:
 0080 2990              ld R2,y+
 0082 2FBE              out 0x3f,R2
 0084 9991              ld R25,y+
 0086 8991              ld R24,y+
 0088 2991              ld R18,y+
 008A 0991              ld R16,y+
 008C 2990              ld R2,y+
 008E                   .dbline 0 ; func end
 008E 1895              reti
 0090                   .dbsym r i 16 c
 0090                   .dbsym r ch 18 c
 0090                   .dbend
 0090                   .dbfunc e init_devices _init_devices fV
                        .even
 0090           _init_devices::
 0090                   .dbline -1
 0090                   .dbline 55
 0090           ; 
 0090           ; //  初始化
 0090           ; void init_devices(void)
 0090           ; {
 0090                   .dbline 56
 0090           ;  CLI();          //  禁止中断
 0090 F894              cli
 0092                   .dbline 57
 0092           ;  DDRB = 0x01;    //  初始化操作74LS164的管脚
 0092 81E0              ldi R24,1
 0094 87BB              out 0x17,R24
 0096                   .dbline 58
 0096           ;  DDRD = 0xC0;    //  初始化操作74LS164的管脚
 0096 80EC              ldi R24,192
 0098 81BB              out 0x11,R24
 009A                   .dbline 59
 009A           ;  timer1_init();
 009A B2DF              rcall _timer1_init
 009C                   .dbline 61
 009C           ; 
 009C           ;  MCUCR = 0x00;
 009C 2224              clr R2
 009E 25BE              out 0x35,R2
 00A0                   .dbline 62
 00A0           ;  GICR  = 0x00;
 00A0 2BBE              out 0x3b,R2
 00A2                   .dbline 63
 00A2           ;  TIMSK = 0x04;   //  设置timer1中断
 00A2 84E0              ldi R24,4
 00A4 89BF              out 0x39,R24
 00A6                   .dbline 64
 00A6           ;  SEI();          //  中断使能
 00A6 7894              sei
 00A8                   .dbline -2
 00A8                   .dbline 65
 00A8           ; }
 00A8           L11:
 00A8                   .dbline 0 ; func end
 00A8 0895              ret
 00AA                   .dbend
 00AA                   .dbfunc e main _main fV
 00AA           ;              x -> R20
                        .even
 00AA           _main::
 00AA                   .dbline -1
 00AA                   .dbline 69
 00AA           ; 
 00AA           ; //
 00AA           ; void main(void)
 00AA           ; {
 00AA                   .dbline 71
 00AA           ;  unsigned char   x;
 00AA           ;  init_devices();
 00AA F2DF              rcall _init_devices
 00AC                   .dbline 73
 00AC           L13:
 00AC                   .dbline 73
 00AC                   .dbline 74
 00AC 4395              inc R20
 00AE                   .dbline 75
 00AE                   .dbline 73
 00AE                   .dbline 73
 00AE FECF              rjmp L13
 00B0           X0:
 00B0                   .dbline -2
 00B0           L12:
 00B0                   .dbline 0 ; func end
 00B0 0895              ret
 00B2                   .dbsym r x 20 c
 00B2                   .dbend
                        .area bss(ram, con, rel)
 0000                   .dbfile D:\job\avrtest\web\example\display\display.c
 0000           _n::
 0000                   .blkb 1
 0001                   .dbsym e n _n c

⌨️ 快捷键说明

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