📄 dianzhen.lis
字号:
.module dianzhen.c
.area data(ram, con, rel)
0000 _data1::
0000 .blkb 2
.area idata
0000 FFFD .byte 255,253
.area data(ram, con, rel)
0002 .blkb 2
.area idata
0002 BDBD .byte 189,189
.area data(ram, con, rel)
0004 .blkb 2
.area idata
0004 81BD .byte 129,189
.area data(ram, con, rel)
0006 .blkb 2
.area idata
0006 BDFD .byte 189,253
.area data(ram, con, rel)
0008 .dbfile F:\最新\点阵\dianzhen.c
0008 .dbsym e data1 _data1 A[8:8]c
0008 _data2::
0008 .blkb 2
.area idata
0008 FFFD .byte 255,253
.area data(ram, con, rel)
000A .dbfile F:\最新\点阵\dianzhen.c
000A .blkb 2
.area idata
000A EBE7 .byte 235,231
.area data(ram, con, rel)
000C .dbfile F:\最新\点阵\dianzhen.c
000C .blkb 2
.area idata
000C 8FE7 .byte 143,231
.area data(ram, con, rel)
000E .dbfile F:\最新\点阵\dianzhen.c
000E .blkb 2
.area idata
000E EBFD .byte 235,253
.area data(ram, con, rel)
0010 .dbfile F:\最新\点阵\dianzhen.c
0010 .dbsym e data2 _data2 A[8:8]c
0010 _addr::
0010 .blkb 1
.area idata
0010 01 .byte 1
.area data(ram, con, rel)
0011 .dbfile F:\最新\点阵\dianzhen.c
0011 .dbsym e addr _addr c
0011 _i::
0011 .blkb 1
.area idata
0011 00 .byte 0
.area data(ram, con, rel)
0012 .dbfile F:\最新\点阵\dianzhen.c
0012 .dbsym e i _i c
0012 _j::
0012 .blkb 4
.area idata
0012 00000000 .word 0,0
.area data(ram, con, rel)
0016 .dbfile F:\最新\点阵\dianzhen.c
0016 .dbsym e j _j L
.area text(rom, con, rel)
0000 .dbfile F:\最新\点阵\dianzhen.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 12
0000 ; //ICC-AVR application builder : 2007-6-12 20:23:24
0000 ; // Target : M16
0000 ; // Crystal: 4.0000Mhz
0000 ;
0000 ; #include <iom16v.h>
0000 ; #include <macros.h>
0000 ; unsigned char data1[]={0xff,0xfd,0xbd,0xbd,0x81,0xbd,0xbd,0xfd};
0000 ; unsigned char data2[]={0xff,0xfd,0xeb,0xe7,0x8f,0xe7,0xeb,0xfd};
0000 ; unsigned char addr = 1,i = 0;
0000 ; long int j = 0;
0000 ; void port_init(void)
0000 ; {
0000 .dbline 13
0000 ; PORTA = 0x00;
0000 2224 clr R2
0002 2BBA out 0x1b,R2
0004 .dbline 14
0004 ; DDRA = 0xFF;
0004 8FEF ldi R24,255
0006 8ABB out 0x1a,R24
0008 .dbline 15
0008 ; PORTB = 0x00;
0008 28BA out 0x18,R2
000A .dbline 16
000A ; DDRB = 0xFF;
000A 87BB out 0x17,R24
000C .dbline 17
000C ; PORTC = 0x00; //m103 output only
000C 25BA out 0x15,R2
000E .dbline 18
000E ; DDRC = 0x00;
000E 24BA out 0x14,R2
0010 .dbline 19
0010 ; PORTD = 0x00;
0010 22BA out 0x12,R2
0012 .dbline 20
0012 ; DDRD = 0x00;
0012 21BA out 0x11,R2
0014 .dbline -2
0014 L1:
0014 .dbline 0 ; func end
0014 0895 ret
0016 .dbend
0016 .dbfunc e timer0_init _timer0_init fV
.even
0016 _timer0_init::
0016 .dbline -1
0016 .dbline 28
0016 ; }
0016 ;
0016 ; //TIMER0 initialize - prescale:64
0016 ; // WGM: Normal
0016 ; // desired value: 1KHz
0016 ; // actual value: 1.008KHz (0.8%)
0016 ; void timer0_init(void)
0016 ; {
0016 .dbline 29
0016 ; TCCR0 = 0x00; //stop
0016 2224 clr R2
0018 23BE out 0x33,R2
001A .dbline 30
001A ; TCNT0 = 0xC2; //set count
001A 82EC ldi R24,194
001C 82BF out 0x32,R24
001E .dbline 31
001E ; OCR0 = 0x3E; //set compare
001E 8EE3 ldi R24,62
0020 8CBF out 0x3c,R24
0022 .dbline 32
0022 ; TCCR0 = 0x03; //start timer
0022 83E0 ldi R24,3
0024 83BF out 0x33,R24
0026 .dbline -2
0026 L2:
0026 .dbline 0 ; func end
0026 0895 ret
0028 .dbend
.area vector(rom, abs)
.org 36
0024 0C941400 jmp _timer0_ovf_isr
.area text(rom, con, rel)
0028 .dbfile F:\最新\点阵\dianzhen.c
0028 .dbfunc e timer0_ovf_isr _timer0_ovf_isr fV
.even
0028 _timer0_ovf_isr::
0028 2A92 st -y,R2
002A 3A92 st -y,R3
002C 4A92 st -y,R4
002E 5A92 st -y,R5
0030 8A92 st -y,R8
0032 9A92 st -y,R9
0034 8A93 st -y,R24
0036 9A93 st -y,R25
0038 AA93 st -y,R26
003A BA93 st -y,R27
003C EA93 st -y,R30
003E FA93 st -y,R31
0040 2FB6 in R2,0x3f
0042 2A92 st -y,R2
0044 0E940000 xcall push_gset2
0048 .dbline -1
0048 .dbline 37
0048 ; }
0048 ;
0048 ; #pragma interrupt_handler timer0_ovf_isr:10
0048 ; void timer0_ovf_isr(void)
0048 ; {
0048 .dbline 38
0048 ; TCNT0 = 0xC2; //reload counter value
0048 82EC ldi R24,194
004A 82BF out 0x32,R24
004C .dbline 41
004C ;
004C ;
004C ; PORTB = addr;
004C 20901000 lds R2,_addr
0050 28BA out 0x18,R2
0052 .dbline 42
0052 ; j++;
0052 41E0 ldi R20,1
0054 50E0 ldi R21,0
0056 60E0 ldi R22,0
0058 70E0 ldi R23,0
005A 40901400 lds R4,_j+2
005E 50901500 lds R5,_j+2+1
0062 20901200 lds R2,_j
0066 30901300 lds R3,_j+1
006A 240E add R2,R20
006C 351E adc R3,R21
006E 461E adc R4,R22
0070 571E adc R5,R23
0072 30921300 sts _j+1,R3
0076 20921200 sts _j,R2
007A 50921500 sts _j+2+1,R5
007E 40921400 sts _j+2,R4
0082 .dbline 43
0082 ; if(j<5000)
0082 48E8 ldi R20,136
0084 53E1 ldi R21,19
0086 60E0 ldi R22,0
0088 70E0 ldi R23,0
008A 2416 cp R2,R20
008C 3506 cpc R3,R21
008E 4606 cpc R4,R22
0090 5706 cpc R5,R23
0092 54F4 brge L4
0094 .dbline 44
0094 ; PORTA = data1[i];
0094 80E0 ldi R24,<_data1
0096 90E0 ldi R25,>_data1
0098 E0911100 lds R30,_i
009C FF27 clr R31
009E E80F add R30,R24
00A0 F91F adc R31,R25
00A2 2080 ldd R2,z+0
00A4 2BBA out 0x1b,R2
00A6 09C0 xjmp L5
00A8 L4:
00A8 .dbline 46
00A8 ; else
00A8 ; PORTA = data2[i];
00A8 80E0 ldi R24,<_data2
00AA 90E0 ldi R25,>_data2
00AC E0911100 lds R30,_i
00B0 FF27 clr R31
00B2 E80F add R30,R24
00B4 F91F adc R31,R25
00B6 2080 ldd R2,z+0
00B8 2BBA out 0x1b,R2
00BA L5:
00BA .dbline 48
00BA ;
00BA ; if(j>10000)
00BA 40E1 ldi R20,16
00BC 57E2 ldi R21,39
00BE 60E0 ldi R22,0
00C0 70E0 ldi R23,0
00C2 40901400 lds R4,_j+2
00C6 50901500 lds R5,_j+2+1
00CA 20901200 lds R2,_j
00CE 30901300 lds R3,_j+1
00D2 4215 cp R20,R2
00D4 5305 cpc R21,R3
00D6 6405 cpc R22,R4
00D8 7505 cpc R23,R5
00DA 64F4 brge L6
00DC .dbline 49
00DC ; j=0;
00DC 40E0 ldi R20,0
00DE 50E0 ldi R21,0
00E0 60E0 ldi R22,0
00E2 70E0 ldi R23,0
00E4 50931300 sts _j+1,R21
00E8 40931200 sts _j,R20
00EC 70931500 sts _j+2+1,R23
00F0 60931400 sts _j+2,R22
00F4 L6:
00F4 .dbline 51
00F4 80911100 lds R24,_i
00F8 8F5F subi R24,255 ; addi 1
00FA 80931100 sts _i,R24
00FE .dbline 53
00FE 20901000 lds R2,_addr
0102 220C lsl R2
0104 20921000 sts _addr,R2
0108 .dbline 55
0108 2220 tst R2
010A 31F4 brne L8
010C .dbline 56
010C .dbline 57
010C 81E0 ldi R24,1
010E 80931000 sts _addr,R24
0112 .dbline 58
0112 2224 clr R2
0114 20921100 sts _i,R2
0118 .dbline 59
0118 L8:
0118 .dbline -2
0118 L3:
0118 0E940000 xcall pop_gset2
011C 2990 ld R2,y+
011E 2FBE out 0x3f,R2
0120 F991 ld R31,y+
0122 E991 ld R30,y+
0124 B991 ld R27,y+
0126 A991 ld R26,y+
0128 9991 ld R25,y+
012A 8991 ld R24,y+
012C 9990 ld R9,y+
012E 8990 ld R8,y+
0130 5990 ld R5,y+
0132 4990 ld R4,y+
0134 3990 ld R3,y+
0136 2990 ld R2,y+
0138 .dbline 0 ; func end
0138 1895 reti
013A .dbend
013A .dbfunc e init_devices _init_devices fV
.even
013A _init_devices::
013A .dbline -1
013A .dbline 64
013A ;
013A ; i++;
013A ;
013A ; addr= addr<<1;
013A ;
013A ; if(addr == 0)
013A ; {
013A ; addr =1;
013A ; i=0;
013A ; }
013A ; }
013A ;
013A ; //call this routine to initialize all peripherals
013A ; void init_devices(void)
013A ; {
013A .dbline 66
013A ; //stop errant interrupts until set up
013A ; CLI(); //disable all interrupts
013A F894 cli
013C .dbline 67
013C ; port_init();
013C 61DF xcall _port_init
013E .dbline 68
013E ; timer0_init();
013E 6BDF xcall _timer0_init
0140 .dbline 70
0140 ;
0140 ; MCUCR = 0x00;
0140 2224 clr R2
0142 25BE out 0x35,R2
0144 .dbline 71
0144 ; GICR = 0x00;
0144 2BBE out 0x3b,R2
0146 .dbline 72
0146 ; TIMSK = 0x01; //timer interrupt sources
0146 81E0 ldi R24,1
0148 89BF out 0x39,R24
014A .dbline 73
014A ; SEI(); //re-enable interrupts
014A 7894 sei
014C .dbline -2
014C L10:
014C .dbline 0 ; func end
014C 0895 ret
014E .dbend
014E .dbfunc e main _main fV
.even
014E _main::
014E .dbline -1
014E .dbline 79
014E ; //all peripherals are now initialized
014E ; }
014E ;
014E ; //
014E ; void main(void)
014E ; {
014E .dbline 80
014E ; init_devices();
014E F5DF xcall _init_devices
0150 .dbline -2
0150 L11:
0150 .dbline 0 ; func end
0150 0895 ret
0152 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -