📄 main.lis
字号:
.module main.c
.area text(rom, con, rel)
0000 .dbfile D:\时钟芯片\1302\1302-162\main.c
.area data(ram, con, rel)
0000 .dbfile D:\时钟芯片\1302\1302-162\main.c
0000 _flag::
0000 .blkb 1
.area idata
0000 00 .byte 0
.area data(ram, con, rel)
0001 .dbfile D:\时钟芯片\1302\1302-162\main.c
0001 .dbsym e flag _flag c
0001 _n::
0001 .blkb 1
.area idata
0001 00 .byte 0
.area data(ram, con, rel)
0002 .dbfile D:\时钟芯片\1302\1302-162\main.c
0002 .dbsym e n _n c
.area text(rom, con, rel)
0000 .dbfile D:\时钟芯片\1302\1302-162\main.c
0000 .dbfunc e port_init _port_init fV
.even
0000 _port_init::
0000 .dbline -1
0000 .dbline 14
0000 ; //ICC-AVR application builder : 2005-11-2 16:28:30
0000 ; // Target : 8515
0000 ; // Crystal: 4.0000Mhz
0000 ; #include <io8515v.h>
0000 ; #include <macros.h>
0000 ; #include <162-1302.h>
0000 ; #include <function.h>
0000 ; uchar temh_d;
0000 ; uchar teml_d;
0000 ; uchar temm_d;
0000 ; uchar flag=0;
0000 ; uchar n=0;
0000 ; void port_init(void)
0000 ; {
0000 .dbline 15
0000 ; PORTA = 0x00;
0000 2224 clr R2
0002 2BBA out 0x1b,R2
0004 .dbline 16
0004 ; DDRA = 0xFF;
0004 8FEF ldi R24,255
0006 8ABB out 0x1a,R24
0008 .dbline 17
0008 ; PORTB = 0xFF;
0008 88BB out 0x18,R24
000A .dbline 18
000A ; DDRB = 0xFF;
000A 87BB out 0x17,R24
000C .dbline 19
000C ; PORTC = 0xFF;
000C 85BB out 0x15,R24
000E .dbline 20
000E ; DDRC = 0xFF;
000E 84BB out 0x14,R24
0010 .dbline 21
0010 ; PORTD = 0x00;
0010 22BA out 0x12,R2
0012 .dbline 22
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 init_devices _init_devices fV
.even
0016 _init_devices::
0016 .dbline -1
0016 .dbline 25
0016 ; } //call this routine to initialize all peripherals
0016 ; void init_devices(void)
0016 ; {
0016 .dbline 27
0016 ; //stop errant interrupts until set up
0016 ; CLI(); //disable all interrupts
0016 F894 cli
0018 .dbline 28
0018 ; port_init();
0018 F3DF rcall _port_init
001A .dbline 29
001A ; MCUCR = 0x00;
001A 2224 clr R2
001C 25BE out 0x35,R2
001E .dbline 30
001E ; GIMSK = 0x40;
001E 80E4 ldi R24,64
0020 8BBF out 0x3b,R24
0022 .dbline 31
0022 ; TIMSK = 0x00;
0022 29BE out 0x39,R2
0024 .dbline 32
0024 ; SEI(); //re-enable interrupts
0024 7894 sei
0026 .dbline -2
0026 L2:
0026 .dbline 0 ; func end
0026 0895 ret
0028 .dbend
0028 .dbfunc e delay_nms _delay_nms fV
0028 ; a -> R20
0028 ; b -> R22
0028 ; n -> R16
.even
0028 _delay_nms::
0028 00D0 rcall push_gset2
002A .dbline -1
002A .dbline 36
002A ; //all peripherals are now initialized
002A ; }
002A ; void delay_nms(uchar n)
002A ; {
002A .dbline 39
002A ; unsigned char a, b;
002A ;
002A ; for (a = 1; a<n; a++)
002A 41E0 ldi R20,1
002C 06C0 rjmp L7
002E L4:
002E .dbline 40
002E ; for (b = 1; b<10; b++)
002E 61E0 ldi R22,1
0030 01C0 rjmp L11
0032 L8:
0032 .dbline 41
0032 L9:
0032 .dbline 40
0032 6395 inc R22
0034 L11:
0034 .dbline 40
0034 6A30 cpi R22,10
0036 E8F3 brlo L8
0038 L5:
0038 .dbline 39
0038 4395 inc R20
003A L7:
003A .dbline 39
003A 4017 cp R20,R16
003C C0F3 brlo L4
003E .dbline -2
003E L3:
003E 00D0 rcall pop_gset2
0040 .dbline 0 ; func end
0040 0895 ret
0042 .dbsym r a 20 c
0042 .dbsym r b 22 c
0042 .dbsym r n 16 c
0042 .dbend
0042 .dbfunc e delay_ns _delay_ns fV
0042 ; b -> R20
0042 ; n -> R22
.even
0042 _delay_ns::
0042 00D0 rcall push_gset2
0044 602F mov R22,R16
0046 .dbline -1
0046 .dbline 44
0046 ; ;
0046 ; }
0046 ; void delay_ns(uchar n)
0046 ; { unsigned char b;
0046 .dbline 45
0046 ; for(b=0;b<n;b++)
0046 4427 clr R20
0048 03C0 rjmp L16
004A L13:
004A .dbline 46
004A 08EC ldi R16,200
004C EDDF rcall _delay_nms
004E L14:
004E .dbline 45
004E 4395 inc R20
0050 L16:
0050 .dbline 45
0050 4617 cp R20,R22
0052 D8F3 brlo L13
0054 .dbline -2
0054 L12:
0054 00D0 rcall pop_gset2
0056 .dbline 0 ; func end
0056 0895 ret
0058 .dbsym r b 20 c
0058 .dbsym r n 22 c
0058 .dbend
.area vector(rom, abs)
.org 2
0002 2CC0 rjmp _int0_isr
.area text(rom, con, rel)
0058 .dbfile D:\时钟芯片\1302\1302-162\main.c
0058 .dbfunc e int0_isr _int0_isr fV
0058 ; t -> R20
0058 ; store -> R20,R21
0058 ; user_code -> R12,R13
0058 ; data_code -> R22,R23
0058 ; i -> R10
.even
0058 _int0_isr::
0058 00D0 rcall push_lset
005A 00D0 rcall push_gset4
005C 2297 sbiw R28,2
005E .dbline -1
005E .dbline 50
005E ; delay_nms(200);
005E ; }
005E ; #pragma interrupt_handler int0_isr:2
005E ; void int0_isr(void)
005E ; {
005E .dbline 53
005E ; //external interupt on INT0
005E ; uchar i;
005E ; uint user_code=0;
005E CC24 clr R12
0060 DD24 clr R13
0062 .dbline 54
0062 ; uint data_code=0,store;
0062 6627 clr R22
0064 7727 clr R23
0066 .dbline 55
0066 ; CLI(); //关闭中断
0066 F894 cli
0068 .dbline 57
0068 ; //**********************目的是检测在3毫秒内如果出现高电平就退出解码程序
0068 ; for(i=0;i<3;i++)
0068 AA24 clr R10
006A 07C0 rjmp L21
006C L18:
006C .dbline 58
006C ; {
006C .dbline 59
006C ; delay_nms(90); //延时1ms
006C 0AE5 ldi R16,90
006E DCDF rcall _delay_nms
0070 .dbline 60
0070 ; if(PIND&0X04)
0070 80B3 in R24,0x10
0072 8470 andi R24,4
0074 09F0 breq L22
0076 .dbline 61
0076 ; {
0076 .dbline 62
0076 ; goto ret;
0076 C2C1 rjmp L24
0078 L22:
0078 .dbline 64
0078 L19:
0078 .dbline 57
0078 A394 inc R10
007A L21:
007A .dbline 57
007A 8A2D mov R24,R10
007C 8330 cpi R24,3
007E B0F3 brlo L18
0080 L25:
0080 .dbline 66
0080 L26:
0080 .dbline 66
0080 ; }
0080 ; }
0080 ; //**********************等高电平出现,再延时4.7ms,跳过结果码
0080 ; while(!(PIND&004));
0080 80B3 in R24,0x10
0082 8470 andi R24,4
0084 E9F3 breq L25
0086 L28:
0086 .dbline 67
0086 L29:
0086 .dbline 67
0086 ; while(PIND&0X04);
0086 80B3 in R24,0x10
0088 8470 andi R24,4
008A E9F7 brne L28
008C .dbline 69
008C ; //**********************开始接收用户码
008C ; for(i=0;i<16;i++)
008C AA24 clr R10
008E 1CC0 rjmp L34
0090 X0:
0090 .dbline 70
0090 ; {
0090 L35:
0090 .dbline 71
0090 L36:
0090 .dbline 71
0090 ; while(!(PIND&0X04));
0090 80B3 in R24,0x10
0092 8470 andi R24,4
0094 E9F3 breq L35
0096 .dbline 72
0096 ; delay_nms(90); //延时1.05ms
0096 0AE5 ldi R16,90
0098 C7DF rcall _delay_nms
009A .dbline 73
009A ; if(PIND&0X04)
009A 80B3 in R24,0x10
009C 8470 andi R24,4
009E 41F0 breq L38
00A0 .dbline 74
00A0 ; {
00A0 .dbline 75
00A0 ; user_code|=(1<<i);
00A0 2A2D mov R18,R10
00A2 3327 clr R19
00A4 01E0 ldi R16,1
00A6 10E0 ldi R17,0
00A8 00D0 rcall lsl16
00AA C02A or R12,R16
00AC D12A or R13,R17
00AE .dbline 77
00AE ;
00AE ; }
00AE 0BC0 rjmp L39
00B0 L38:
00B0 .dbline 79
00B0 ; else
00B0 ; {
00B0 .dbline 80
00B0 ; user_code&=~(1<<i);
00B0 2A2D mov R18,R10
00B2 3327 clr R19
00B4 01E0 ldi R16,1
00B6 10E0 ldi R17,0
00B8 00D0 rcall lsl16
00BA 202E mov R2,R16
00BC 312E mov R3,R17
00BE 2094 com R2
00C0 3094 com R3
00C2 C220 and R12,R2
00C4 D320 and R13,R3
00C6 .dbline 81
00C6 ; }
00C6 L39:
00C6 .dbline 82
00C6 L32:
00C6 .dbline 69
00C6 A394 inc R10
00C8 L34:
00C8 .dbline 69
00C8 8A2D mov R24,R10
00CA 8031 cpi R24,16
00CC 08F3 brlo L36
00CE .dbline 85
00CE ; }
00CE ;
00CE ; //**********************开始接收数据
00CE ; for(i=0;i<16;i++)
00CE AA24 clr R10
00D0 1CC0 rjmp L43
00D2 X1:
00D2 .dbline 86
00D2 ; {
00D2 L44:
00D2 .dbline 87
00D2 L45:
00D2 .dbline 87
00D2 ; while(!(PIND&0X04));
00D2 80B3 in R24,0x10
00D4 8470 andi R24,4
00D6 E9F3 breq L44
00D8 .dbline 88
00D8 ; delay_nms(90); //延时1.05ms
00D8 0AE5 ldi R16,90
00DA A6DF rcall _delay_nms
00DC .dbline 89
00DC ; if(PIND&0X04)
00DC 80B3 in R24,0x10
00DE 8470 andi R24,4
00E0 41F0 breq L47
00E2 .dbline 90
00E2 ; {
00E2 .dbline 91
00E2 ; data_code|=(1<<i);
00E2 2A2D mov R18,R10
00E4 3327 clr R19
00E6 01E0 ldi R16,1
00E8 10E0 ldi R17,0
00EA 00D0 rcall lsl16
00EC 602B or R22,R16
00EE 712B or R23,R17
00F0 .dbline 93
00F0 ;
00F0 ; }
00F0 0BC0 rjmp L48
00F2 L47:
00F2 .dbline 95
00F2 ; else
00F2 ; {
00F2 .dbline 96
00F2 ; data_code&=~(1<<i);
00F2 2A2D mov R18,R10
00F4 3327 clr R19
00F6 01E0 ldi R16,1
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -