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

📄 ds1302.lis

📁 1302+lcd时钟显示C语言程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
                        .module ds1302.c
                        .area text(rom, con, rel)
 0000                   .dbfile D:\单片机\ds1302\ds1302_end/delay.c
 0000                   .dbfunc e delay_1us _delay_1us fV
                        .even
 0000           _delay_1us::
 0000                   .dbline -1
 0000                   .dbline 6
 0000           ; #include <iom16v.h>                   //包含型号头文件
 0000           ; #include <macros.h>                   //包含"位"操作头文件
 0000           ; #define uchar unsigned char
 0000           ; #define uint unsigned int
 0000           ; 
 0000           ; #include "1602B_LCD.C"                        //包含1602液晶函数文件
 0000                   .dbline 7
 0000           ; 
 0000 0000              nop
 0002                   .dbline -2
 0002           L1:
 0002                   .dbline 0 ; func end
 0002 0895              ret
 0004                   .dbend
 0004                   .dbfunc e delay_nus _delay_nus fV
 0004           ;              i -> R20,R21
 0004           ;              n -> R22,R23
                        .even
 0004           _delay_nus::
 0004 0E940000          xcall push_gset2
 0008 B801              movw R22,R16
 000A                   .dbline -1
 000A                   .dbline 11
 000A           ; /******************RTC常量******************/
 000A           ; #define RTC_CLK       PB7
 000A           ; #define RTC_DATA      PB6
 000A           ; #define RTC_CS        PB4
 000A                   .dbline 12
 000A           ;       //命令
 000A 4427              clr R20
 000C 5527              clr R21
 000E                   .dbline 13
 000E           ; #define RD            0x01
 000E 03C0              xjmp L6
 0010           L3:
 0010                   .dbline 14
 0010 F7DF              xcall _delay_1us
 0012           L4:
 0012                   .dbline 13
 0012 4F5F              subi R20,255  ; offset = 1
 0014 5F4F              sbci R21,255
 0016           L6:
 0016                   .dbline 13
 0016 4617              cp R20,R22
 0018 5707              cpc R21,R23
 001A D0F3              brlo L3
 001C                   .dbline -2
 001C           L2:
 001C 0E940000          xcall pop_gset2
 0020                   .dbline 0 ; func end
 0020 0895              ret
 0022                   .dbsym r i 20 i
 0022                   .dbsym r n 22 i
 0022                   .dbend
 0022                   .dbfunc e delay_1ms _delay_1ms fV
 0022           ;              i -> R16,R17
                        .even
 0022           _delay_1ms::
 0022                   .dbline -1
 0022                   .dbline 18
 0022           ; #define WR            0x00
 0022           ; #define C_SEC         0x80    //秒
 0022           ; #define C_MIN         0x82    //分
 0022           ; #define C_HR          0x84    //时
 0022           ; #define C_DAY         0x86    //日
 0022                   .dbline 20
 0022 0027              clr R16
 0024 1127              clr R17
 0026 02C0              xjmp L11
 0028           L8:
 0028                   .dbline 20
 0028           L9:
 0028                   .dbline 20
 0028 0F5F              subi R16,255  ; offset = 1
 002A 1F4F              sbci R17,255
 002C           L11:
 002C                   .dbline 20
 002C           ; #define C_MTH         0x88    //月
 002C           ; #define C_WK          0x8A    //星期 DATE
 002C 0437              cpi R16,116
 002E E4E0              ldi R30,4
 0030 1E07              cpc R17,R30
 0032 D0F3              brlo L8
 0034                   .dbline -2
 0034           L7:
 0034                   .dbline 0 ; func end
 0034 0895              ret
 0036                   .dbsym r i 16 i
 0036                   .dbend
 0036                   .dbfunc e delay_nms _delay_nms fV
 0036           ;              i -> R20,R21
 0036           ;              n -> R22,R23
                        .even
 0036           _delay_nms::
 0036 0E940000          xcall push_gset2
 003A B801              movw R22,R16
 003C                   .dbline -1
 003C                   .dbline 24
 003C           ; #define C_YR          0x8C    //年
 003C           ; #define C_WP          0x8E    //控制(写保护)
 003C           ; #define C_CHARGE      0x90    //涓流充电
 003C           ; #define C_BURST               0xBE    //时钟多字节
 003C                   .dbline 25
 003C           ;       //配置
 003C 4427              clr R20
 003E 5527              clr R21
 0040                   .dbline 26
 0040           ; #define CLK_HALT              0x80    //停止时钟控制位    SECOND      bit7
 0040 03C0              xjmp L16
 0042           L13:
 0042                   .dbline 27
 0042 EFDF              xcall _delay_1ms
 0044           L14:
 0044                   .dbline 26
 0044 4F5F              subi R20,255  ; offset = 1
 0046 5F4F              sbci R21,255
 0048           L16:
 0048                   .dbline 26
 0048 4617              cp R20,R22
 004A 5707              cpc R21,R23
 004C D0F3              brlo L13
 004E                   .dbline -2
 004E           L12:
 004E 0E940000          xcall pop_gset2
 0052                   .dbline 0 ; func end
 0052 0895              ret
 0054                   .dbsym r i 20 i
 0054                   .dbsym r n 22 i
 0054                   .dbend
 0054                   .dbfunc e delay _delay fV
 0054           ;              i -> R20,R21
 0054           ;              n -> R22,R23
                        .even
 0054           _delay::
 0054 0E940000          xcall push_gset2
 0058 B801              movw R22,R16
 005A                   .dbline -1
 005A                   .dbline 30
 005A           ; #define CLK_START             0x00    //启动时钟
 005A           ; #define M12_24                        0x80    //12/24小时值选择位 HOUR                bit7 
 005A           ; #define PROTECT                       0x80    //写保护控制位      CONTROL     bit7 
 005A           ; #define UPROTECT              0x00    //写保护控制位      CONTROL     bit7 
 005A                   .dbline 31
 005A           ;       //涓流充电控制常量
 005A 4427              clr R20
 005C 5527              clr R21
 005E                   .dbline 32
 005E           ; #define TC_D1R2                       0xA5    //high 1 Diode +2K Resistors  
 005E 03C0              xjmp L21
 0060           L18:
 0060                   .dbline 33
 0060 E0DF              xcall _delay_1ms
 0062           L19:
 0062                   .dbline 32
 0062 4F5F              subi R20,255  ; offset = 1
 0064 5F4F              sbci R21,255
 0066           L21:
 0066                   .dbline 32
 0066 4617              cp R20,R22
 0068 5707              cpc R21,R23
 006A D0F3              brlo L18
 006C                   .dbline -2
 006C           L17:
 006C 0E940000          xcall pop_gset2
 0070                   .dbline 0 ; func end
 0070 0895              ret
 0072                   .dbsym r i 20 i
 0072                   .dbsym r n 22 i
 0072                   .dbend
 0072                   .dbfile D:\单片机\ds1302\ds1302_end/1602B_LCD.C
 0072                   .dbfunc e LCD_Write_half_char _LCD_Write_half_char fV
                        .even
 0072           _LCD_Write_half_char::
 0072                   .dbline -1
 0072                   .dbline 28
 0072                   .dbline 29
 0072 85B3              in R24,0x15
 0074 8F70              andi R24,15
 0076 85BB              out 0x15,R24
 0078                   .dbline 30
 0078 80910000          lds R24,_data_temp
 007C 90910100          lds R25,_data_temp+1
 0080 880F              lsl R24
 0082 991F              rol R25
 0084 880F              lsl R24
 0086 991F              rol R25
 0088 880F              lsl R24
 008A 991F              rol R25
 008C 880F              lsl R24
 008E 991F              rol R25
 0090 807F              andi R24,240
 0092 9070              andi R25,0
 0094 25B2              in R2,0x15
 0096 3324              clr R3
 0098 282A              or R2,R24
 009A 392A              or R3,R25
 009C 25BA              out 0x15,R2
 009E                   .dbline 31
 009E AB9A              sbi 0x15,3
 00A0                   .dbline 32
 00A0 02E0              ldi R16,2
 00A2 10E0              ldi R17,0
 00A4 D7DF              xcall _delay
 00A6                   .dbline 33
 00A6           ; #define TC_D2R8                       0xAB    //low  2 Diodes+8K Resistors  
 00A6 AB98              cbi 0x15,3
 00A8                   .dbline 34
 00A8           ; #define TC_DISABLED           0x00    //Disabled(TCS<>1010 or DS=00 or RS=00)
 00A8 85B3              in R24,0x15
 00AA 8F70              andi R24,15
 00AC 85BB              out 0x15,R24
 00AE                   .dbline 35
 00AE           ;       //RAM 命令
 00AE 02E0              ldi R16,2
 00B0 10E0              ldi R17,0
 00B2 D0DF              xcall _delay
 00B4                   .dbline -2
 00B4           L22:
 00B4                   .dbline 0 ; func end
 00B4 0895              ret
 00B6                   .dbend
 00B6                   .dbfunc e LCD_write_char _LCD_write_char fV
 00B6           ;           data -> R20,R21
 00B6           ;        command -> R22,R23
                        .even
 00B6           _LCD_write_char::
 00B6 0E940000          xcall push_gset2
 00BA A901              movw R20,R18
 00BC B801              movw R22,R16
 00BE                   .dbline -1
 00BE                   .dbline 39
 00BE           ; #define C_RAMBASE             0xC0    //RAM0~RAM30<<1 地址需左移一位 
 00BE           ; 
 00BE           ; void Delayus(uint US)           
 00BE           ; {
 00BE                   .dbline 40
 00BE           ;  asm("nop");
 00BE AB98              cbi 0x15,3
 00C0                   .dbline 41
 00C0           ; }
 00C0 6030              cpi R22,0
 00C2 6707              cpc R22,R23
 00C4 11F4              brne L24
 00C6           X0:
 00C6                   .dbline 42
 00C6           ; void Delayms(uint MS)           
 00C6 AA98              cbi 0x15,2
 00C8 01C0              xjmp L25
 00CA           L24:
 00CA                   .dbline 44
 00CA           ; {
 00CA           ;  uint i,j;
 00CA AA9A              sbi 0x15,2
 00CC           L25:
 00CC                   .dbline 46
 00CC           ;  for( i=0;i<MS;i++)
 00CC           ;  for(j=0;j<1180;j++); //1141是在8MHz晶振下,通过软件仿真反复实验得到的数值
 00CC 50930100          sts _data_temp+1,R21
 00D0 40930000          sts _data_temp,R20
 00D4                   .dbline 47
 00D4           ; }
 00D4 1A01              movw R2,R20
 00D6 3694              lsr R3
 00D8 2794              ror R2
 00DA 3694              lsr R3
 00DC 2794              ror R2
 00DE 3694              lsr R3
 00E0 2794              ror R2
 00E2 3694              lsr R3
 00E4 2794              ror R2
 00E6 30920100          sts _data_temp+1,R3
 00EA 20920000          sts _data_temp,R2
 00EE                   .dbline 48
 00EE           ; 
 00EE C1DF              xcall _LCD_Write_half_char
 00F0                   .dbline 49
 00F0           ; 
 00F0 50930100          sts _data_temp+1,R21
 00F4 40930000          sts _data_temp,R20
 00F8                   .dbline 50
 00F8           ; 
 00F8 BCDF              xcall _LCD_Write_half_char
 00FA                   .dbline 51
 00FA           ; /*******************************************
 00FA 01E0              ldi R16,1
 00FC 10E0              ldi R17,0
 00FE AADF              xcall _delay
 0100                   .dbline -2
 0100           L23:

⌨️ 快捷键说明

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