📄 int0.lis
字号:
007C .dbline -2
007C L22:
007C .dbline 0 ; func end
007C 0895 ret
007E .dbend
.area vector(rom, abs)
.org 4
0004 0C943F00 jmp _int0_isr
.area text(rom, con, rel)
007E .dbfile C:\DOCUME~1\Administrator\桌面\新建文~2\INT0\INT0.c
007E .dbfunc e int0_isr _int0_isr fV
007E ; i -> R20
.even
007E _int0_isr::
007E 0E940000 xcall push_lset
0082 0E940000 xcall push_gset1
0086 .dbline -1
0086 .dbline 44
0086 ; }
0086 ;
0086 ; #pragma interrupt_handler int0_isr:2
0086 ; void int0_isr(void)
0086 ; {
0086 .dbline 47
0086 ; uchar i;
0086 ;
0086 ; CLI();
0086 F894 cli
0088 .dbline 48
0088 ; {
0088 .dbline 49
0088 ; for(i=0;i<5;i++)
0088 4427 clr R20
008A 09C0 xjmp L27
008C L24:
008C .dbline 50
008C ; {
008C .dbline 51
008C ; delay_nus(1000);
008C 08EE ldi R16,1000
008E 13E0 ldi R17,3
0090 B9DF xcall _delay_nus
0092 .dbline 52
0092 ; if((PIND&0X04)==0X04)
0092 80B3 in R24,0x10
0094 8470 andi R24,4
0096 8430 cpi R24,4
0098 09F4 brne L28
009A .dbline 53
009A ; {
009A .dbline 54
009A ; return;
009A 45C0 xjmp L23
009C L28:
009C .dbline 56
009C L25:
009C .dbline 49
009C 4395 inc R20
009E L27:
009E .dbline 49
009E 4530 cpi R20,5
00A0 A8F3 brlo L24
00A2 L30:
00A2 .dbline 57
00A2 L31:
00A2 .dbline 57
00A2 ; }
00A2 ; }
00A2 ; while((PIND&0X04)!=0X04);//等待高电平
00A2 80B3 in R24,0x10
00A4 8470 andi R24,4
00A6 8430 cpi R24,4
00A8 E1F7 brne L30
00AA .dbline 58
00AA ; delay_nus(2900);//延时4.8ms
00AA 04E5 ldi R16,2900
00AC 1BE0 ldi R17,11
00AE AADF xcall _delay_nus
00B0 .dbline 59
00B0 ; for(i=0;i<8;i++)
00B0 4427 clr R20
00B2 21C0 xjmp L36
00B4 X0:
00B4 .dbline 60
00B4 ; {
00B4 L37:
00B4 .dbline 61
00B4 L38:
00B4 .dbline 61
00B4 ; while((PIND&0X04)!=0X04);//等待高电平
00B4 80B3 in R24,0x10
00B6 8470 andi R24,4
00B8 8430 cpi R24,4
00BA E1F7 brne L37
00BC .dbline 62
00BC ; delay_nus(480);//延时480us
00BC 00EE ldi R16,480
00BE 11E0 ldi R17,1
00C0 A1DF xcall _delay_nus
00C2 .dbline 63
00C2 ; if(PIND&0X04)
00C2 829B sbis 0x10,2
00C4 0EC0 rjmp L40
00C6 .dbline 64
00C6 ; {
00C6 .dbline 65
00C6 ; temp=temp>>1;
00C6 20900000 lds R2,_temp
00CA 2694 lsr R2
00CC 20920000 sts _temp,R2
00D0 .dbline 66
00D0 ; delay_nus(200);//
00D0 08EC ldi R16,200
00D2 10E0 ldi R17,0
00D4 97DF xcall _delay_nus
00D6 .dbline 67
00D6 ; temp|=0x80; //数据写入1
00D6 80910000 lds R24,_temp
00DA 8068 ori R24,128
00DC 80930000 sts _temp,R24
00E0 .dbline 68
00E0 ; }
00E0 09C0 xjmp L41
00E2 L40:
00E2 .dbline 70
00E2 ; else
00E2 ; {
00E2 .dbline 71
00E2 ; temp=temp>>1;
00E2 20900000 lds R2,_temp
00E6 2694 lsr R2
00E8 20920000 sts _temp,R2
00EC .dbline 72
00EC ; temp&=0x7f; //数据写入0
00EC 822D mov R24,R2
00EE 8F77 andi R24,127
00F0 80930000 sts _temp,R24
00F4 .dbline 73
00F4 ; }
00F4 L41:
00F4 .dbline 74
00F4 L34:
00F4 .dbline 59
00F4 4395 inc R20
00F6 L36:
00F6 .dbline 59
00F6 4830 cpi R20,8
00F8 E8F2 brlo L38
00FA .dbline 76
00FA ; }
00FA ;
00FA ; }
00FA L42:
00FA .dbline 77
00FA L43:
00FA .dbline 77
00FA ; while((PIND&0X04)!=0X04);//等待高电平
00FA 80B3 in R24,0x10
00FC 8470 andi R24,4
00FE 8430 cpi R24,4
0100 E1F7 brne L42
0102 .dbline 78
0102 ; delay_nus(480);//延时480us
0102 00EE ldi R16,480
0104 11E0 ldi R17,1
0106 7EDF xcall _delay_nus
0108 .dbline 80
0108 ;
0108 ; if(!(PIND&0X04))
0108 8299 sbic 0x10,2
010A 01C0 rjmp L45
010C .dbline 82
010C ;
010C ; {
010C .dbline 83
010C ; return;
010C 0CC0 xjmp L23
010E L45:
010E .dbline 93
010E ; }
010E ; /*if(temp==0x06)
010E ; {
010E ; PORTA=temp;
010E ; SPI_send(abc[temp]);
010E ;
010E ;
010E ; }*/
010E ; else
010E ; {
010E .dbline 94
010E ; PORTA=temp;
010E 20900000 lds R2,_temp
0112 2BBA out 0x1b,R2
0114 .dbline 95
0114 ; SPI_send(abc[temp]);
0114 80E0 ldi R24,<_abc
0116 90E0 ldi R25,>_abc
0118 E22D mov R30,R2
011A FF27 clr R31
011C E80F add R30,R24
011E F91F adc R31,R25
0120 0081 ldd R16,z+0
0122 9EDF xcall _SPI_send
0124 .dbline 97
0124 ;
0124 ; }
0124 .dbline 98
0124 ; SEI();
0124 7894 sei
0126 .dbline -2
0126 L23:
0126 0E940000 xcall pop_gset1
012A 0E940000 xcall pop_lset
012E .dbline 0 ; func end
012E 1895 reti
0130 .dbsym r i 20 c
0130 .dbend
0130 .dbfunc e main _main fV
.even
0130 _main::
0130 .dbline -1
0130 .dbline 103
0130 ; }
0130 ;
0130 ; //call this routine to initialize all peripherals
0130 ; void main(void)
0130 ; {
0130 .dbline 105
0130 ; //stop errant interrupts until set up
0130 ; CLI(); //disable all interrupts
0130 F894 cli
0132 .dbline 106
0132 ; port_init();
0132 9ADF xcall _port_init
0134 .dbline 107
0134 ; SPI_init();
0134 8FDF xcall _SPI_init
0136 .dbline 108
0136 ; MCUCR = 0x02;
0136 82E0 ldi R24,2
0138 85BF out 0x35,R24
013A .dbline 109
013A ; GICR = 0x40;
013A 80E4 ldi R24,64
013C 8BBF out 0x3b,R24
013E .dbline 110
013E ; TIMSK = 0x00; //timer interrupt sources
013E 2224 clr R2
0140 29BE out 0x39,R2
0142 .dbline 111
0142 ; SPI_send(abc[16]);
0142 00911100 lds R16,_abc+16
0146 8CDF xcall _SPI_send
0148 .dbline 112
0148 ; SEI(); //re-enable interrupts
0148 7894 sei
014A L49:
014A .dbline 115
014A .dbline 118
014A L50:
014A .dbline 114
014A FFCF xjmp L49
014C X1:
014C .dbline -2
014C L47:
014C .dbline 0 ; func end
014C 0895 ret
014E .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -