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

📄 ds1302_main.lis

📁 16个单片机c语言实验程序
💻 LIS
📖 第 1 页 / 共 5 页
字号:
                        .module ds1302_main.c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\16实验程序\ds1302\ds1302_main.c
 0000                   .dbfile E:\16实验程序\ds1302\ds1302.h
 0000                   .dbfunc e ds1302_write_byte _ds1302_write_byte fV
 0000           ;              i -> R20
 0000           ;              d -> R18
 0000           ;           addr -> R16
                        .even
 0000           _ds1302_write_byte::
 0000 4A93              st -y,R20
 0002                   .dbline -1
 0002                   .dbline 37
 0002           ; //时钟电路DS1302试验程序
 0002           ; //使用1602液晶显示
 0002           ; 
 0002           ; #include "iom16v.h"
 0002           ; #include "ds1302.h"
 0002           ; #include "1602.h"
 0002           ; 
 0002           ; uchar aa[]={'-'};
 0002           ; //时钟数据
 0002           ; unsigned char time_data[8] = {0x21,0x11,0x11,0x12,0x18,0x52,0x00,0x02};
 0002           ; 
 0002           ; //在16M延时1ms的延时函数
 0002           ; void s_1ms(unsigned int ms)
 0002           ; {
 0002           ;     unsigned int aa;
 0002           ;       for(;ms>=1;ms--)
 0002           ;       {
 0002           ;       for(aa=0;aa<=2000;aa++)
 0002           ;       {;}
 0002           ;       }
 0002           ; }     
 0002           ; 
 0002           ; //主函数
 0002           ; void main() 
 0002           ; {
 0002           ;       unsigned char temp;
 0002           ;       //端口初始化
 0002           ;       PORTA = 0xFF;                           
 0002           ;       DDRA = 0xFF;                            
 0002           ;       PORTB = 0xF0;                           
 0002           ;       DDRB = 0xFF;                            
 0002           ;       PORTC = 0x7F;
 0002           ;       DDRC = 0x80;
 0002           ;       PORTD = 0x00;
 0002           ;       DDRD = 0xFF;
 0002           ; 
 0002           ;       s_1ms(20);
 0002                   .dbline 40
 0002           ;       //1602液晶初始化
 0002           ;       LcdInit();
 0002           ;       //时钟芯片DS1302初始化
 0002 AE9A              sbi 0x15,6
 0004                   .dbline 43
 0004           ;       ds1302_init();
 0004           ;       s_1ms(10);
 0004           ;       //写入初始的时间
 0004 A19A              sbi 0x14,1
 0006                   .dbline 44
 0006           ;       ds1302_write_time(time_data);
 0006 0E7F              andi R16,254
 0008                   .dbline 45
 0008           ; 
 0008 4427              clr R20
 000A 09C0              xjmp L5
 000C           L2:
 000C                   .dbline 45
 000C                   .dbline 46
 000C           ;       while (1) {
 000C 00FF              sbrs R16,0
 000E 02C0              rjmp L6
 0010           X0:
 0010                   .dbline 46
 0010                   .dbline 47
 0010           ;               s_1ms(100);
 0010 A99A              sbi 0x15,1
 0012                   .dbline 48
 0012           ;               //读出时钟数据
 0012 01C0              xjmp L7
 0014           L6:
 0014                   .dbline 49
 0014           ;               ds1302_read_time(time_data);
 0014                   .dbline 50
 0014           ;           //显示年份
 0014 A998              cbi 0x15,1
 0016                   .dbline 51
 0016           ;               WriteNum(1,3,2);   //2
 0016           L7:
 0016                   .dbline 52
 0016           ;               WriteNum(1,4,0);   //0
 0016 A89A              sbi 0x15,0
 0018                   .dbline 53
 0018           ;               temp = (time_data[1] >> 4) ;
 0018 A898              cbi 0x15,0
 001A                   .dbline 54
 001A           ;               WriteNum(1,5,temp);
 001A 0695              lsr R16
 001C                   .dbline 55
 001C           ;               temp = (time_data[1] & 0x0F);
 001C           L3:
 001C                   .dbline 45
 001C 4395              inc R20
 001E           L5:
 001E                   .dbline 45
 001E 4830              cpi R20,8
 0020 A8F3              brlo L2
 0022           X1:
 0022                   .dbline 58
 0022           ;               WriteNum(1,6,temp);
 0022           ;               WriteChar(1,7,2,aa);
 0022           ;               
 0022 A19A              sbi 0x14,1
 0024                   .dbline 59
 0024           ;               temp = (time_data[2] >> 4);
 0024 4427              clr R20
 0026 09C0              xjmp L11
 0028           L8:
 0028                   .dbline 59
 0028                   .dbline 60
 0028           ;               WriteNum(1,8,temp);
 0028 20FF              sbrs R18,0
 002A 02C0              rjmp L12
 002C           X2:
 002C                   .dbline 60
 002C                   .dbline 61
 002C           ;               temp = (time_data[2] & 0x0F);
 002C A99A              sbi 0x15,1
 002E                   .dbline 62
 002E           ;               WriteNum(1,9,temp);
 002E 01C0              xjmp L13
 0030           L12:
 0030                   .dbline 63
 0030           ;               WriteChar(1,10,2,aa);
 0030                   .dbline 64
 0030           ;               
 0030 A998              cbi 0x15,1
 0032                   .dbline 65
 0032           ;               temp = (time_data[3] >> 4);
 0032           L13:
 0032                   .dbline 66
 0032           ;               WriteNum(1,11,temp);
 0032 A89A              sbi 0x15,0
 0034                   .dbline 67
 0034           ;               temp = (time_data[3] & 0x0F);
 0034 A898              cbi 0x15,0
 0036                   .dbline 68
 0036           ;               WriteNum(1,12,temp);
 0036 2695              lsr R18
 0038                   .dbline 69
 0038           ;               
 0038           L9:
 0038                   .dbline 59
 0038 4395              inc R20
 003A           L11:
 003A                   .dbline 59
 003A 4830              cpi R20,8
 003C A8F3              brlo L8
 003E           X3:
 003E                   .dbline 70
 003E           ;               temp = (time_data[4] >> 4);
 003E AE98              cbi 0x15,6
 0040                   .dbline -2
 0040           L1:
 0040                   .dbline 0 ; func end
 0040 4991              ld R20,y+
 0042 0895              ret
 0044                   .dbsym r i 20 c
 0044                   .dbsym r d 18 c
 0044                   .dbsym r addr 16 c
 0044                   .dbend
 0044                   .dbfunc e ds1302_read_byte _ds1302_read_byte fc
 0044           ;           temp -> R20
 0044           ;              i -> R22
 0044           ;           addr -> R16
                        .even
 0044           _ds1302_read_byte::
 0044 4A93              st -y,R20
 0046 6A93              st -y,R22
 0048                   .dbline -1
 0048                   .dbline 74
 0048           ;               WriteNum(2,4,temp);
 0048           ;               temp = (time_data[4] & 0x0F);
 0048           ;               WriteNum(2,5,temp);
 0048           ;               WriteChar(2,6,2,aa);
 0048                   .dbline 78
 0048           ;               
 0048           ;               temp = (time_data[5] >> 4);
 0048           ;               WriteNum(2,7,temp);
 0048           ;               temp = (time_data[5] & 0x0F);
 0048 AE9A              sbi 0x15,6
 004A                   .dbline 81
 004A           ;               WriteNum(2,8,temp);
 004A           ;               WriteChar(2,9,2,aa);
 004A           ;               
 004A A19A              sbi 0x14,1
 004C                   .dbline 82
 004C           ;               temp = (time_data[6] >> 4);
 004C 0160              ori R16,1
 004E                   .dbline 83
 004E           ;               WriteNum(2,10,temp);
 004E 6627              clr R22
 0050 09C0              xjmp L18
 0052           L15:
 0052                   .dbline 83
 0052                   .dbline 84
 0052           ;               temp = (time_data[6] & 0x0F);
 0052 00FF              sbrs R16,0
 0054 02C0              rjmp L19
 0056           X4:
 0056                   .dbline 84
 0056                   .dbline 85
 0056           ;               WriteNum(2,11,temp);
 0056 A99A              sbi 0x15,1
 0058                   .dbline 86
 0058           ;               }
 0058 01C0              xjmp L20
 005A           L19:
 005A                   .dbline 87
 005A           ; }
 005A                   .dbline 88
 005A A998              cbi 0x15,1
 005C                   .dbline 89
 005C           L20:
 005C                   .dbline 90
 005C A89A              sbi 0x15,0
 005E                   .dbline 91
 005E A898              cbi 0x15,0
 0060                   .dbline 92
 0060 0695              lsr R16
 0062                   .dbline 93
 0062           L16:
 0062                   .dbline 83
 0062 6395              inc R22
 0064           L18:
 0064                   .dbline 83
 0064 6830              cpi R22,8
 0066 A8F3              brlo L15
 0068           X5:
 0068                   .dbline 96
 0068 A198              cbi 0x14,1
 006A                   .dbline 97
 006A 6627              clr R22
 006C 09C0              xjmp L24
 006E           L21:
 006E                   .dbline 97
 006E                   .dbline 98
 006E 4695              lsr R20
 0070                   .dbline 99
 0070 999B              sbis 0x13,1
 0072 02C0              rjmp L25
 0074           X6:
 0074                   .dbline 99
 0074                   .dbline 100
 0074 4068              ori R20,128
 0076                   .dbline 101
 0076 01C0              xjmp L26
 0078           L25:
 0078                   .dbline 102
 0078                   .dbline 103
 0078 4F77              andi R20,127
 007A                   .dbline 104
 007A           L26:
 007A                   .dbline 105
 007A A89A              sbi 0x15,0
 007C                   .dbline 106
 007C A898              cbi 0x15,0
 007E                   .dbline 107
 007E           L22:
 007E                   .dbline 97
 007E 6395              inc R22
 0080           L24:
 0080                   .dbline 97
 0080 6830              cpi R22,8
 0082 A8F3              brlo L21
 0084           X7:
 0084                   .dbline 109
 0084 AE98              cbi 0x15,6
 0086                   .dbline 110
 0086 042F              mov R16,R20
 0088                   .dbline -2
 0088           L14:
 0088                   .dbline 0 ; func end
 0088 6991              ld R22,y+
 008A 4991              ld R20,y+
 008C 0895              ret
 008E                   .dbsym r temp 20 c
 008E                   .dbsym r i 22 c
 008E                   .dbsym r addr 16 c
 008E                   .dbend
 008E                   .dbfunc e ds1302_write_time _ds1302_write_time fV
 008E           ;      time_data -> R20,R21
                        .even
 008E           _ds1302_write_time::
 008E 4A93              st -y,R20
 0090 5A93              st -y,R21
 0092 A801              movw R20,R16
 0094                   .dbline -1
 0094                   .dbline 115
 0094                   .dbline 117
 0094 2227              clr R18
 0096 0EE8              ldi R16,142
 0098 B3DF              xcall _ds1302_write_byte
 009A                   .dbline 118
 009A 20E8              ldi R18,128
 009C 00E8              ldi R16,128
 009E B0DF              xcall _ds1302_write_byte
 00A0                   .dbline 119
 00A0 4F5F              subi R20,255  ; offset = 1
 00A2 5F4F              sbci R21,255
 00A4                   .dbline 120
 00A4 FA01              movw R30,R20
 00A6 2191              ld R18,Z+
 00A8 AF01              movw R20,R30
 00AA 0CE8              ldi R16,140
 00AC A9DF              xcall _ds1302_write_byte
 00AE                   .dbline 121
 00AE FA01              movw R30,R20
 00B0 2191              ld R18,Z+
 00B2 AF01              movw R20,R30
 00B4 08E8              ldi R16,136
 00B6 A4DF              xcall _ds1302_write_byte
 00B8                   .dbline 122
 00B8 FA01              movw R30,R20
 00BA 2191              ld R18,Z+
 00BC AF01              movw R20,R30
 00BE 06E8              ldi R16,134
 00C0 9FDF              xcall _ds1302_write_byte
 00C2                   .dbline 123
 00C2 FA01              movw R30,R20
 00C4 2191              ld R18,Z+
 00C6 AF01              movw R20,R30
 00C8 04E8              ldi R16,132
 00CA 9ADF              xcall _ds1302_write_byte
 00CC                   .dbline 124
 00CC FA01              movw R30,R20
 00CE 2191              ld R18,Z+
 00D0 AF01              movw R20,R30
 00D2 02E8              ldi R16,130
 00D4 95DF              xcall _ds1302_write_byte
 00D6                   .dbline 125
 00D6 FA01              movw R30,R20
 00D8 2191              ld R18,Z+
 00DA AF01              movw R20,R30

⌨️ 快捷键说明

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