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

📄 rtc.lis

📁 AVRkaifashili.rar
💻 LIS
📖 第 1 页 / 共 4 页
字号:
                        .module RTC.C
                        .area data(ram, con, rel)
 0000           _Table::
 0000                   .blkb 2
                        .area idata
 0000 3F06              .byte 63,6
                        .area data(ram, con, rel)
 0002                   .blkb 2
                        .area idata
 0002 5B4F              .byte 91,'O
                        .area data(ram, con, rel)
 0004                   .blkb 2
                        .area idata
 0004 666D              .byte 'f,'m
                        .area data(ram, con, rel)
 0006                   .blkb 2
                        .area idata
 0006 7D07              .byte 125,7
                        .area data(ram, con, rel)
 0008                   .blkb 2
                        .area idata
 0008 7F6F              .byte 127,'o
                        .area data(ram, con, rel)
 000A                   .dbfile C:\DOCUME~1\Administrator\桌面\张军\PS2-ICC\RTC.C
 000A                   .dbsym e Table _Table A[10:10]c
                        .area text(rom, con, rel)
 0000                   .dbfile C:\DOCUME~1\Administrator\桌面\张军\PS2-ICC\RTC.C
 0000                   .dbfunc e DelayMs _DelayMs fV
 0000           ;              j -> R20
 0000           ;              i -> R16,R17
                        .even
 0000           _DelayMs::
 0000 00D0              rcall push_gset1
 0002                   .dbline -1
 0002                   .dbline 14
 0002           ; #include <io8535v.h>
 0002           ; #include <macros.h>
 0002           ; #ifndef uchar 
 0002           ; #define uchar unsigned char
 0002           ; #define uint  unsigned int
 0002           ; #endif
 0002           ; 
 0002           ; #define SD2303 0x64  //SD2303器件IIC识别码
 0002           ; 
 0002           ; uchar F_Flag;
 0002           ; uchar Table[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
 0002           ; 
 0002           ; void DelayMs(uint i)  //0.25ms
 0002           ; {uchar j;
 0002                   .dbline 15
 0002           ;  for(;i!=0;i--)
 0002 07C0              rjmp L5
 0004           L2:
 0004                   .dbline 16
 0004                   .dbline 16
 0004 40ED              ldi R20,208
 0006 01C0              rjmp L9
 0008           L6:
 0008                   .dbline 16
 0008                   .dbline 16
 0008                   .dbline 16
 0008           L7:
 0008                   .dbline 16
 0008 4A95              dec R20
 000A           L9:
 000A                   .dbline 16
 000A 4423              tst R20
 000C E9F7              brne L6
 000E                   .dbline 16
 000E           L3:
 000E                   .dbline 15
 000E 0150              subi R16,1
 0010 1040              sbci R17,0
 0012           L5:
 0012                   .dbline 15
 0012 0030              cpi R16,0
 0014 0107              cpc R16,R17
 0016 B1F7              brne L2
 0018           X0:
 0018                   .dbline -2
 0018                   .dbline 17
 0018           ;   {for(j=2000;j!=0;j--) {;}}
 0018           ; }
 0018           L1:
 0018 00D0              rcall pop_gset1
 001A                   .dbline 0 ; func end
 001A 0895              ret
 001C                   .dbsym r j 20 c
 001C                   .dbsym r i 16 i
 001C                   .dbend
 001C                   .dbfunc e Display _Display fV
 001C           ;              i -> R20
 001C           ;            sel -> R22
 001C           ;              p -> R10,R11
                        .even
 001C           _Display::
 001C 00D0              rcall push_gset3
 001E A02E              mov R10,R16
 0020 B12E              mov R11,R17
 0022                   .dbline -1
 0022                   .dbline 20
 0022           ; 
 0022           ; void Display(uchar *p) //间隔5ms显示
 0022           ; {uchar i,sel=0x01;
 0022                   .dbline 20
 0022 61E0              ldi R22,1
 0024                   .dbline 21
 0024           ;  for(i=0;i<4;i++)
 0024 4427              clr R20
 0026 17C0              rjmp L14
 0028           L11:
 0028                   .dbline 22
 0028                   .dbline 22
 0028 262E              mov R2,R22
 002A 2094              com R2
 002C 28BA              out 0x18,R2
 002E                   .dbline 23
 002E 80E0              ldi R24,<_Table
 0030 90E0              ldi R25,>_Table
 0032 EA2D              mov R30,R10
 0034 FB2D              mov R31,R11
 0036 E081              ldd R30,z+0
 0038 FF27              clr R31
 003A E80F              add R30,R24
 003C F91F              adc R31,R25
 003E 2080              ldd R2,z+0
 0040 2BBA              out 0x1b,R2
 0042                   .dbline 24
 0042 8A2D              mov R24,R10
 0044 9B2D              mov R25,R11
 0046 0196              adiw R24,1
 0048 A82E              mov R10,R24
 004A B92E              mov R11,R25
 004C                   .dbline 25
 004C 04E1              ldi R16,20
 004E 10E0              ldi R17,0
 0050 D7DF              rcall _DelayMs
 0052                   .dbline 26
 0052 660F              lsl R22
 0054                   .dbline 27
 0054           L12:
 0054                   .dbline 21
 0054 4395              inc R20
 0056           L14:
 0056                   .dbline 21
 0056 4430              cpi R20,4
 0058 38F3              brlo L11
 005A                   .dbline -2
 005A                   .dbline 28
 005A           ;   {PORTB=~sel;
 005A           ;    PORTA=Table[*p];
 005A           ;    p++;
 005A           ;    DelayMs(20);
 005A           ;    sel=sel<<1;
 005A           ;   }
 005A           ; }
 005A           L10:
 005A 00D0              rcall pop_gset3
 005C                   .dbline 0 ; func end
 005C 0895              ret
 005E                   .dbsym r i 20 c
 005E                   .dbsym r sel 22 c
 005E                   .dbsym r p 10 pc
 005E                   .dbend
 005E                   .dbfunc e NOPNOP _NOPNOP fV
 005E           ;              i -> R16
                        .even
 005E           _NOPNOP::
 005E                   .dbline -1
 005E                   .dbline 32
 005E                   .dbline 32
 005E 02C0              rjmp L19
 0060           L16:
 0060                   .dbline 32
 0060 0000              nop
 0062           L17:
 0062                   .dbline 32
 0062 0A95              dec R16
 0064           L19:
 0064                   .dbline 32
 0064           ;  
 0064           ;  
 0064           ; void NOPNOP(uchar i)
 0064           ; {for(;i!=0;i--) NOP();}
 0064 0023              tst R16
 0066 E1F7              brne L16
 0068                   .dbline -2
 0068                   .dbline 32
 0068           L15:
 0068                   .dbline 0 ; func end
 0068 0895              ret
 006A                   .dbsym r i 16 c
 006A                   .dbend
 006A                   .dbfunc e SetSCL _SetSCL fV
 006A           ;              i -> R16
                        .even
 006A           _SetSCL::
 006A                   .dbline -1
 006A                   .dbline 36
 006A           ; 
 006A           ; //sbit SCL=PC^0;       //定义SD2303IIC时钟线
 006A           ; void SetSCL(uchar i)
 006A           ; {if(i==1) PORTC=PORTC|0x01;
 006A                   .dbline 36
 006A 0130              cpi R16,1
 006C 11F4              brne L21
 006E                   .dbline 36
 006E A89A              sbi 0x15,0
 0070 03C0              rjmp L22
 0072           L21:
 0072                   .dbline 37
 0072 85B3              in R24,0x15
 0074 8E7F              andi R24,254
 0076 85BB              out 0x15,R24
 0078           L22:
 0078                   .dbline -2
 0078                   .dbline 37
 0078           ;  else     PORTC=PORTC&0xfe;}
 0078           L20:
 0078                   .dbline 0 ; func end
 0078 0895              ret
 007A                   .dbsym r i 16 c
 007A                   .dbend
 007A                   .dbfunc e SetSDA _SetSDA fV
 007A           ;              i -> R16
                        .even
 007A           _SetSDA::
 007A                   .dbline -1
 007A                   .dbline 41
 007A           ;  
 007A           ; //sbit SDA=PC^1;       //定义SD2303IIC数据线
 007A           ; void SetSDA(uchar i)
 007A           ; {if(i==1) PORTC=PORTC|0x02;
 007A                   .dbline 41
 007A 0130              cpi R16,1
 007C 11F4              brne L24
 007E                   .dbline 41
 007E A99A              sbi 0x15,1
 0080 03C0              rjmp L25
 0082           L24:
 0082                   .dbline 42
 0082 85B3              in R24,0x15
 0084 8D7F              andi R24,253
 0086 85BB              out 0x15,R24
 0088           L25:
 0088                   .dbline -2
 0088                   .dbline 42
 0088           ;  else     PORTC=PORTC&0xfd;}
 0088           L23:
 0088                   .dbline 0 ; func end
 0088 0895              ret
 008A                   .dbsym r i 16 c
 008A                   .dbend
 008A                   .dbfunc e Start _Start fV
                        .even
 008A           _Start::
 008A                   .dbline -1
 008A                   .dbline 48
 008A           ;  
 008A           ; //sbit INTRB=PD^6;     //定义SD2303中断线A
 008A           ; //sbit INTRA=P1^7;     //定义SD2303中断线B
 008A           ; 
 008A           ; void Start()         //IIC总线开始
 008A           ; {SetSDA(1);//SDA=1;              //条件:SCL高电平时SDA的下降沿
 008A                   .dbline 48
 008A 01E0              ldi R16,1
 008C F6DF              rcall _SetSDA
 008E                   .dbline 49
 008E           ;  SetSCL(1);//SCL=1;
 008E 01E0              ldi R16,1
 0090 ECDF              rcall _SetSCL
 0092                   .dbline 50
 0092           ;  NOPNOP(50);//while(SCL==0){;}    //等待时钟信号变成高电平以确保总线开始
 0092 02E3              ldi R16,50
 0094 E4DF              rcall _NOPNOP
 0096                   .dbline 53
 0096           ;  //_nop_();
 0096           ;  //_nop_();
 0096           ;  SetSDA(0);//SDA=0;
 0096 0027              clr R16
 0098 F0DF              rcall _SetSDA
 009A                   .dbline 54
 009A           ;   NOPNOP(50);
 009A 02E3              ldi R16,50
 009C E0DF              rcall _NOPNOP
 009E                   .dbline 59
 009E           ;  //_nop_();
 009E           ;  //_nop_();
 009E           ;  //_nop_();
 009E           ;  //_nop_();
 009E           ;  SetSCL(0);// SCL=0;              //拉低时钟信号线
 009E 0027              clr R16
 00A0                   .dbline -2
 00A0                   .dbline 60
 00A0           ; }
 00A0           L26:
 00A0                   .dbline 0 ; func end
 00A0 E4CF              rjmp _SetSCL
 00A2                   .dbend
 00A2                   .dbfunc e Stop _Stop fV
                        .even
 00A2           _Stop::
 00A2                   .dbline -1
 00A2                   .dbline 63
 00A2           ; 
 00A2           ; void Stop()          //IIC总线结束
 00A2           ; {SetSDA(0);//SDA=0;              //条件:SCL为高电平时SDA的上升沿
 00A2                   .dbline 63
 00A2 0027              clr R16
 00A4 EADF              rcall _SetSDA
 00A6                   .dbline 64
 00A6           ;  SetSCL(1);//SCL=1;
 00A6 01E0              ldi R16,1
 00A8 E0DF              rcall _SetSCL
 00AA                   .dbline 65
 00AA           ;  NOPNOP(50);//while(SCL==0){;}    //等待时钟信号变成低电平以确保总线结束
 00AA 02E3              ldi R16,50
 00AC D8DF              rcall _NOPNOP
 00AE                   .dbline 68
 00AE           ; // _nop_();
 00AE           ; // _nop_();
 00AE           ;  SetSDA(1);//SDA=1;
 00AE 01E0              ldi R16,1
 00B0 E4DF              rcall _SetSDA
 00B2                   .dbline 69
 00B2           ;  NOPNOP(50);
 00B2 02E3              ldi R16,50
 00B4 D4DF              rcall _NOPNOP
 00B6                   .dbline 74
 00B6           ;  //_nop_();
 00B6           ;  //_nop_();
 00B6           ;  //_nop_();
 00B6           ;  //_nop_();
 00B6           ;  SetSCL(0);//SCL=0;
 00B6 0027              clr R16
 00B8                   .dbline -2

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -