📄 10.lis
字号:
.module _10.c
.area text(rom, con, rel)
0000 .dbfile D:\xij\demo\demo_diy02-8a\1\C语言\02-8a-10\10.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 10
0000 ; //ICC-AVR application builder : 2005-3-11 15:28:29
0000 ; // Target : M48
0000 ; // Crystal: 8.0000Mhz
0000 ;
0000 ; #include <iom48v.h>
0000 ; #include <macros.h>
0000 ; unsigned char size;
0000 ;
0000 ; void port_init(void)
0000 ; {
0000 .dbline 11
0000 ; PORTB = 0xFF;
0000 8FEF ldi R24,255
0002 85B9 out 0x5,R24
0004 .dbline 12
0004 ; DDRB = 0xff;
0004 84B9 out 0x4,R24
0006 .dbline 13
0006 ; PORTC = 0x7F; //m103 output only
0006 8FE7 ldi R24,127
0008 88B9 out 0x8,R24
000A .dbline 14
000A ; DDRC = 0x00;
000A 2224 clr R2
000C 27B8 out 0x7,R2
000E .dbline 15
000E ; PORTD = 0xFF;
000E 8FEF ldi R24,255
0010 8BB9 out 0xb,R24
0012 .dbline 16
0012 ; DDRD = 0xF0;
0012 80EF ldi R24,240
0014 8AB9 out 0xa,R24
0016 .dbline -2
0016 L1:
0016 .dbline 0 ; func end
0016 0895 ret
0018 .dbend
0018 .dbfunc e init_devices _init_devices fV
.even
0018 _init_devices::
0018 .dbline -1
0018 .dbline 21
0018 ; }
0018 ;
0018 ; //call this routine to initialize all peripherals
0018 ; void init_devices(void)
0018 ; {
0018 .dbline 23
0018 ; //stop errant interrupts until set up
0018 ; CLI(); //disable all interrupts
0018 F894 cli
001A .dbline 24
001A ; port_init();
001A F2DF rcall _port_init
001C .dbline 26
001C ;
001C ; MCUCR = 0x00;
001C 2224 clr R2
001E 25BE out 0x35,R2
0020 .dbline 27
0020 ; EICRA = 0x00; //extended ext ints
0020 20926900 sts 105,R2
0024 .dbline 28
0024 ; EIMSK = 0x00;
0024 2DBA out 0x1d,R2
0026 .dbline 30
0026 ;
0026 ; TIMSK0 = 0x00; //timer 0 interrupt sources
0026 20926E00 sts 110,R2
002A .dbline 31
002A ; TIMSK1 = 0x00; //timer 1 interrupt sources
002A 20926F00 sts 111,R2
002E .dbline 32
002E ; TIMSK2 = 0x00; //timer 2 interrupt sources
002E 20927000 sts 112,R2
0032 .dbline 34
0032 ;
0032 ; PCMSK0 = 0x00; //pin change mask 0
0032 20926B00 sts 107,R2
0036 .dbline 35
0036 ; PCMSK1 = 0x00; //pin change mask 1
0036 20926C00 sts 108,R2
003A .dbline 36
003A ; PCMSK2 = 0x00; //pin change mask 2
003A 20926D00 sts 109,R2
003E .dbline 37
003E ; PCICR = 0x00; //pin change enable
003E 20926800 sts 104,R2
0042 .dbline 38
0042 ; PRR = 0x00; //power controller
0042 20926400 sts 100,R2
0046 .dbline 39
0046 ; SEI(); //re-enable interrupts
0046 7894 sei
0048 .dbline -2
0048 L2:
0048 .dbline 0 ; func end
0048 0895 ret
004A .dbend
004A .dbfunc e forward _forward fV
.even
004A _forward::
004A .dbline -1
004A .dbline 45
004A ; //all peripherals are now initialized
004A ; }
004A ;
004A ; /*前行*/
004A ; void forward(void)
004A ; {
004A .dbline 46
004A ; PORTD = 0X9F;
004A 8FE9 ldi R24,159
004C 8BB9 out 0xb,R24
004E .dbline 47
004E ; PORTB = 0XF8;
004E 88EF ldi R24,248
0050 85B9 out 0x5,R24
0052 .dbline -2
0052 L3:
0052 .dbline 0 ; func end
0052 0895 ret
0054 .dbend
0054 .dbfunc e stop _stop fV
.even
0054 _stop::
0054 .dbline -1
0054 .dbline 52
0054 ; }
0054 ;
0054 ; /*停止*/
0054 ; void stop(void)
0054 ; {
0054 .dbline 53
0054 ; PORTD = 0XFF;
0054 8FEF ldi R24,255
0056 8BB9 out 0xb,R24
0058 .dbline 54
0058 ; PORTB = 0XFF;
0058 85B9 out 0x5,R24
005A .dbline -2
005A L4:
005A .dbline 0 ; func end
005A 0895 ret
005C .dbend
005C .dbfunc e mic_startup _mic_startup fV
005C ; mic_in -> R16
.even
005C _mic_startup::
005C .dbline -1
005C .dbline 58
005C ; }
005C ;
005C ; void mic_startup()
005C ; {//声控启动程序运行
005C 04C0 rjmp L7
005E L6:
005E .dbline 61
005E ; unsigned char mic_in;
005E ; while(1)
005E ; { //无键按下等待
005E .dbline 62
005E ; mic_in=PINC & 0x20; //pc5=0
005E 06B1 in R16,0x6
0060 0072 andi R16,32
0062 .dbline 63
0062 ; if(mic_in==0){break;}
0062 09F4 brne L9
0064 .dbline 63
0064 .dbline 63
0064 01C0 rjmp L8
0066 L9:
0066 .dbline 64
0066 L7:
0066 .dbline 60
0066 FBCF rjmp L6
0068 L8:
0068 .dbline -2
0068 L5:
0068 .dbline 0 ; func end
0068 0895 ret
006A .dbsym r mic_in 16 c
006A .dbend
006A .dbfunc e main _main fV
006A ; i -> <dead>
.even
006A _main::
006A .dbline -1
006A .dbline 69
006A ; }//有键按下运行下面的程序
006A ; }
006A ;
006A ; /*主程序*/
006A ; void main()
006A ; {
006A .dbline 71
006A ; unsigned char i;
006A ; init_devices();
006A D6DF rcall _init_devices
006C L12:
006C .dbline 73
006C ; demand:
006C ; mic_startup();
006C F7DF rcall _mic_startup
006E .dbline 77
006E ; //while(1){
006E ; //i = PINC&20;
006E ; //if(i == 0){
006E ; size++;
006E 80910000 lds R24,_size
0072 8F5F subi R24,255 ; addi 1
0074 80930000 sts _size,R24
0078 0FC0 rjmp L14
007A L13:
007A .dbline 82
007A ; //break;
007A ; //}
007A ; //}
007A ; while(1)
007A ; {
007A .dbline 83
007A ; if(size==1)
007A 80910000 lds R24,_size
007E 8130 cpi R24,1
0080 11F4 brne L16
0082 .dbline 84
0082 ; {
0082 .dbline 85
0082 ; forward();}
0082 E3DF rcall _forward
0084 .dbline 85
0084 F3CF rjmp L12
0086 L16:
0086 .dbline 86
0086 80910000 lds R24,_size
008A 8230 cpi R24,2
008C 79F7 brne L12
008E .dbline 87
008E .dbline 88
008E E2DF rcall _stop
0090 .dbline 89
0090 2224 clr R2
0092 20920000 sts _size,R2
0096 .dbline 89
0096 .dbline 90
0096 EACF rjmp L12
0098 L14:
0098 .dbline 81
0098 F0CF rjmp L13
009A X0:
009A .dbline -2
009A L11:
009A .dbline 0 ; func end
009A 0895 ret
009C .dbsym l i 1 c
009C .dbend
.area bss(ram, con, rel)
0000 .dbfile D:\xij\demo\demo_diy02-8a\1\C语言\02-8a-10\10.c
0000 _size::
0000 .blkb 1
0001 .dbsym e size _size c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -