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

📄 main.lis

📁 有遥控的温度计,用dS1302做时钟芯片
💻 LIS
📖 第 1 页 / 共 4 页
字号:
                        .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 + -