📄 main.lis
字号:
.module main.c
.area text(rom, con, rel)
0000 .dbfile E:\ICCAVR\project\AVRMEG~3\icc\015-DS1302-LCD1602\main.c
0000 .dbfunc e io_init _io_init fV
.even
0000 _io_init::
0000 .dbline -1
0000 .dbline 23
0000 ; /*
0000 ; 实验十五:
0000 ;
0000 ; DS1302时钟实险,LCD1602显示。
0000 ; 1、设置和读取DS1302内部时钟,并通过LCD1602显示。
0000 ; 2、内部1 M晶振,程序采用单任务方式,软件延时。
0000 ; 3、此实验需要有LCD1602显示屏才可以显示。
0000 ; 4、DS1302是产品中最常用的时钟芯片,通过本例子的学习可以学会如何使用DS1302。
0000 ; 5、此实验对硬件及芯片的综合知识要求比较高,所以建议大家把此实验放到后面。
0000 ;
0000 ; 此实验参照了版主tonghe的DS1302时钟程序。
0000 ;
0000 ; AVR mega16学习板
0000 ; www.iccavr.com
0000 ; 10:44 2007-5-10
0000 ; */
0000 ;
0000 ; #include "iom128v.h"
0000 ; #include "ds1302.h"
0000 ; #include "lcd1602.h"
0000 ;
0000 ; /*IO口初始化函数*/
0000 ; void io_init(void) {
0000 .dbline 25
0000 ;
0000 ; DDRA = 0xFF; /*方向输出*/
0000 8FEF ldi R24,255
0002 8ABB out 0x1a,R24
0004 .dbline 26
0004 ; PORTA = 0xFF; /*高电平*/
0004 8BBB out 0x1b,R24
0006 .dbline 27
0006 ; DDRB = 0x00; /*方向输入*/
0006 2224 clr R2
0008 27BA out 0x17,R2
000A .dbline 28
000A ; PORTB = 0xFF; /*打开上拉*/
000A 88BB out 0x18,R24
000C .dbline 29
000C ; DDRC = 0xFF; /*不用的IO口建议设置为输入带上拉*/
000C 84BB out 0x14,R24
000E .dbline 30
000E ; PORTC = 0x00;
000E 25BA out 0x15,R2
0010 .dbline 31
0010 ; DDRD = 0x00;
0010 21BA out 0x11,R2
0012 .dbline 32
0012 ; PORTD = 0xFF;
0012 82BB out 0x12,R24
0014 .dbline 33
0014 ; DDRE = 0x00;
0014 22B8 out 0x2,R2
0016 .dbline 34
0016 ; PORTE = 0xFF;
0016 83B9 out 0x3,R24
0018 .dbline 35
0018 ; DDRF = 0x00;
0018 20926100 sts 97,R2
001C .dbline 36
001C ; PORTF = 0xFF;
001C 80936200 sts 98,R24
0020 .dbline 37
0020 ; DDRG = 0x00;
0020 20926400 sts 100,R2
0024 .dbline 38
0024 ; PORTG = 0xFF;
0024 80936500 sts 101,R24
0028 .dbline -2
0028 L1:
0028 .dbline 0 ; func end
0028 0895 ret
002A .dbend
002A .dbfunc e main _main fV
002A ; temp -> R20
.even
002A _main::
002A 2197 sbiw R28,1
002C .dbline -1
002C .dbline 41
002C ; }
002C ;
002C ; void main(void) {
002C .dbline 45
002C ;
002C ; unsigned char temp;
002C ;
002C ; io_init(); /*IO口初始化*/
002C E9DF xcall _io_init
002E .dbline 46
002E ; delay_ms(200);
002E 08EC ldi R16,200
0030 0E940000 xcall _delay_ms
0034 .dbline 47
0034 ; LCD_init(); /*LCD1602初始化*/
0034 0E940000 xcall _LCD_init
0038 .dbline 48
0038 ; ds1302_init(); /*DS302初始化*/
0038 0E940000 xcall _ds1302_init
003C .dbline 49
003C ; delay_ms(10);
003C 0AE0 ldi R16,10
003E 0E940000 xcall _delay_ms
0042 .dbline 50
0042 ; ds1302_write_time(); /*设置DS302时间*/
0042 0E940000 xcall _ds1302_write_time
0046 A4C0 xjmp L4
0048 L3:
0048 .dbline 52
0048 .dbline 53
0048 08EC ldi R16,200
004A 0E940000 xcall _delay_ms
004E .dbline 54
004E 0E940000 xcall _ds1302_read_time
0052 .dbline 55
0052 0E940000 xcall _LCD_clear
0056 .dbline 57
0056 40910000 lds R20,_time_buf
005A 4295 swap R20
005C 4F70 andi R20,#0x0F
005E 405D subi R20,208 ; addi 48
0060 .dbline 58
0060 4883 std y+0,R20
0062 2227 clr R18
0064 0027 clr R16
0066 0E940000 xcall _LCD_write_char
006A .dbline 59
006A 40910000 lds R20,_time_buf
006E 4F70 andi R20,15
0070 405D subi R20,208 ; addi 48
0072 .dbline 60
0072 4883 std y+0,R20
0074 2227 clr R18
0076 01E0 ldi R16,1
0078 0E940000 xcall _LCD_write_char
007C .dbline 61
007C 40910100 lds R20,_time_buf+1
0080 4295 swap R20
0082 4F70 andi R20,#0x0F
0084 405D subi R20,208 ; addi 48
0086 .dbline 62
0086 4883 std y+0,R20
0088 2227 clr R18
008A 02E0 ldi R16,2
008C 0E940000 xcall _LCD_write_char
0090 .dbline 63
0090 40910100 lds R20,_time_buf+1
0094 4F70 andi R20,15
0096 405D subi R20,208 ; addi 48
0098 .dbline 64
0098 4883 std y+0,R20
009A 2227 clr R18
009C 03E0 ldi R16,3
009E 0E940000 xcall _LCD_write_char
00A2 .dbline 65
00A2 8DE2 ldi R24,45
00A4 8883 std y+0,R24
00A6 2227 clr R18
00A8 04E0 ldi R16,4
00AA 0E940000 xcall _LCD_write_char
00AE .dbline 67
00AE 40910200 lds R20,_time_buf+2
00B2 4295 swap R20
00B4 4F70 andi R20,#0x0F
00B6 405D subi R20,208 ; addi 48
00B8 .dbline 68
00B8 4883 std y+0,R20
00BA 2227 clr R18
00BC 05E0 ldi R16,5
00BE 0E940000 xcall _LCD_write_char
00C2 .dbline 69
00C2 40910200 lds R20,_time_buf+2
00C6 4F70 andi R20,15
00C8 405D subi R20,208 ; addi 48
00CA .dbline 70
00CA 4883 std y+0,R20
00CC 2227 clr R18
00CE 06E0 ldi R16,6
00D0 0E940000 xcall _LCD_write_char
00D4 .dbline 71
00D4 8DE2 ldi R24,45
00D6 8883 std y+0,R24
00D8 2227 clr R18
00DA 07E0 ldi R16,7
00DC 0E940000 xcall _LCD_write_char
00E0 .dbline 73
00E0 40910300 lds R20,_time_buf+3
00E4 4295 swap R20
00E6 4F70 andi R20,#0x0F
00E8 405D subi R20,208 ; addi 48
00EA .dbline 74
00EA 4883 std y+0,R20
00EC 2227 clr R18
00EE 08E0 ldi R16,8
00F0 0E940000 xcall _LCD_write_char
00F4 .dbline 75
00F4 40910300 lds R20,_time_buf+3
00F8 4F70 andi R20,15
00FA 405D subi R20,208 ; addi 48
00FC .dbline 76
00FC 4883 std y+0,R20
00FE 2227 clr R18
0100 09E0 ldi R16,9
0102 0E940000 xcall _LCD_write_char
0106 .dbline 78
0106 40910400 lds R20,_time_buf+4
010A 4295 swap R20
010C 4F70 andi R20,#0x0F
010E 405D subi R20,208 ; addi 48
0110 .dbline 79
0110 4883 std y+0,R20
0112 21E0 ldi R18,1
0114 08E0 ldi R16,8
0116 0E940000 xcall _LCD_write_char
011A .dbline 80
011A 40910400 lds R20,_time_buf+4
011E 4F70 andi R20,15
0120 405D subi R20,208 ; addi 48
0122 .dbline 81
0122 4883 std y+0,R20
0124 21E0 ldi R18,1
0126 09E0 ldi R16,9
0128 0E940000 xcall _LCD_write_char
012C .dbline 82
012C 8AE3 ldi R24,58
012E 8883 std y+0,R24
0130 21E0 ldi R18,1
0132 0AE0 ldi R16,10
0134 0E940000 xcall _LCD_write_char
0138 .dbline 84
0138 40910500 lds R20,_time_buf+5
013C 4295 swap R20
013E 4F70 andi R20,#0x0F
0140 405D subi R20,208 ; addi 48
0142 .dbline 85
0142 4883 std y+0,R20
0144 21E0 ldi R18,1
0146 0BE0 ldi R16,11
0148 0E940000 xcall _LCD_write_char
014C .dbline 86
014C 40910500 lds R20,_time_buf+5
0150 4F70 andi R20,15
0152 405D subi R20,208 ; addi 48
0154 .dbline 87
0154 4883 std y+0,R20
0156 21E0 ldi R18,1
0158 0CE0 ldi R16,12
015A 0E940000 xcall _LCD_write_char
015E .dbline 88
015E 8AE3 ldi R24,58
0160 8883 std y+0,R24
0162 21E0 ldi R18,1
0164 0DE0 ldi R16,13
0166 0E940000 xcall _LCD_write_char
016A .dbline 90
016A 40910600 lds R20,_time_buf+6
016E 4295 swap R20
0170 4F70 andi R20,#0x0F
0172 405D subi R20,208 ; addi 48
0174 .dbline 91
0174 4883 std y+0,R20
0176 21E0 ldi R18,1
0178 0EE0 ldi R16,14
017A 0E940000 xcall _LCD_write_char
017E .dbline 92
017E 40910600 lds R20,_time_buf+6
0182 4F70 andi R20,15
0184 405D subi R20,208 ; addi 48
0186 .dbline 93
0186 4883 std y+0,R20
0188 21E0 ldi R18,1
018A 0FE0 ldi R16,15
018C 0E940000 xcall _LCD_write_char
0190 .dbline 94
0190 L4:
0190 .dbline 52
0190 5BCF xjmp L3
0192 X0:
0192 .dbline -2
0192 L2:
0192 2196 adiw R28,1
0194 .dbline 0 ; func end
0194 0895 ret
0196 .dbsym r temp 20 c
0196 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -