📄 main.lis
字号:
.module main.c
.area text(rom, con, rel)
0000 .dbfile D:\MYJOB~1\AVR资料\示例程序\DS1302-LCD1602-4bitBUS\main.c
0000 .dbfunc e main _main fV
0000 ; temp -> R20
.even
0000 _main::
0000 2197 sbiw R28,1
0002 .dbline -1
0002 .dbline 23
0002 ; /*
0002 ; 实验LCD四线驱动程序:
0002 ;
0002 ; DS1302时钟实险,LCD1602四线驱动显示。
0002 ; 1、设置和读取DS1302内部时钟,并通过LCD1602四线驱动显示。
0002 ; 2、内部1 M晶振,程序采用单任务方式,软件延时。
0002 ; 3、进行此实验请插上PB4-PB7、PD3、PD4、PD6,PC4、PC7短路块。
0002 ; 4、DS1302芯片接口占用JTAG仿真接口,在做实验时需要关闭mega16的JTAG功能。
0002 ; 5、此实验需要有LCD1602显示屏才可以显示。
0002 ; 6、此实验对硬件及芯片的综合知识要求比较高,所以建议大家把此实验放到后面。
0002 ;
0002 ; 此实验参照了版主tonghe的DS1302时钟程序。
0002 ;
0002 ; AVR mega16学习板
0002 ; www.iccavr.com
0002 ; 10:44 2007-8-7
0002 ; */
0002 ;
0002 ; #include "iom16v.h"
0002 ; #include "ds1302.h"
0002 ; #include "lcd1602.h"
0002 ;
0002 ; void main(void) {
0002 .dbline 27
0002 ;
0002 ; unsigned char temp;
0002 ;
0002 ; PORTA = 0xFF; /*打开上拉*/
0002 8FEF ldi R24,255
0004 8BBB out 0x1b,R24
0006 .dbline 28
0006 ; DDRA = 0x00; /*方向输入*/
0006 2224 clr R2
0008 2ABA out 0x1a,R2
000A .dbline 29
000A ; PORTB = 0xF0; /*电平设置*/
000A 80EF ldi R24,240
000C 88BB out 0x18,R24
000E .dbline 30
000E ; DDRB = 0xFF; /*方向输出*/
000E 8FEF ldi R24,255
0010 87BB out 0x17,R24
0012 .dbline 31
0012 ; PORTC = 0x7F;
0012 8FE7 ldi R24,127
0014 85BB out 0x15,R24
0016 .dbline 32
0016 ; DDRC = 0x80;
0016 80E8 ldi R24,128
0018 84BB out 0x14,R24
001A .dbline 33
001A ; PORTD = 0xFF;
001A 8FEF ldi R24,255
001C 82BB out 0x12,R24
001E .dbline 34
001E ; DDRD = 0x00;
001E 21BA out 0x11,R2
0020 .dbline 36
0020 ;
0020 ; delay_ms(200);
0020 08EC ldi R16,200
0022 0E940000 xcall _delay_ms
0026 .dbline 37
0026 ; LCD_init();
0026 0E940000 xcall _LCD_init
002A .dbline 38
002A ; ds1302_init();
002A 0E940000 xcall _ds1302_init
002E .dbline 39
002E ; delay_ms(10);
002E 0AE0 ldi R16,10
0030 0E940000 xcall _delay_ms
0034 .dbline 40
0034 ; ds1302_write_time();
0034 0E940000 xcall _ds1302_write_time
0038 A4C0 xjmp L3
003A L2:
003A .dbline 42
003A .dbline 43
003A 08EC ldi R16,200
003C 0E940000 xcall _delay_ms
0040 .dbline 44
0040 0E940000 xcall _ds1302_read_time
0044 .dbline 45
0044 0E940000 xcall _LCD_clear
0048 .dbline 47
0048 40910000 lds R20,_time_buf
004C 4295 swap R20
004E 4F70 andi R20,#0x0F
0050 405D subi R20,208 ; addi 48
0052 .dbline 48
0052 4883 std y+0,R20
0054 2227 clr R18
0056 0027 clr R16
0058 0E940000 xcall _LCD_write_char
005C .dbline 49
005C 40910000 lds R20,_time_buf
0060 4F70 andi R20,15
0062 405D subi R20,208 ; addi 48
0064 .dbline 50
0064 4883 std y+0,R20
0066 2227 clr R18
0068 01E0 ldi R16,1
006A 0E940000 xcall _LCD_write_char
006E .dbline 51
006E 40910100 lds R20,_time_buf+1
0072 4295 swap R20
0074 4F70 andi R20,#0x0F
0076 405D subi R20,208 ; addi 48
0078 .dbline 52
0078 4883 std y+0,R20
007A 2227 clr R18
007C 02E0 ldi R16,2
007E 0E940000 xcall _LCD_write_char
0082 .dbline 53
0082 40910100 lds R20,_time_buf+1
0086 4F70 andi R20,15
0088 405D subi R20,208 ; addi 48
008A .dbline 54
008A 4883 std y+0,R20
008C 2227 clr R18
008E 03E0 ldi R16,3
0090 0E940000 xcall _LCD_write_char
0094 .dbline 55
0094 8DE2 ldi R24,45
0096 8883 std y+0,R24
0098 2227 clr R18
009A 04E0 ldi R16,4
009C 0E940000 xcall _LCD_write_char
00A0 .dbline 57
00A0 40910200 lds R20,_time_buf+2
00A4 4295 swap R20
00A6 4F70 andi R20,#0x0F
00A8 405D subi R20,208 ; addi 48
00AA .dbline 58
00AA 4883 std y+0,R20
00AC 2227 clr R18
00AE 05E0 ldi R16,5
00B0 0E940000 xcall _LCD_write_char
00B4 .dbline 59
00B4 40910200 lds R20,_time_buf+2
00B8 4F70 andi R20,15
00BA 405D subi R20,208 ; addi 48
00BC .dbline 60
00BC 4883 std y+0,R20
00BE 2227 clr R18
00C0 06E0 ldi R16,6
00C2 0E940000 xcall _LCD_write_char
00C6 .dbline 61
00C6 8DE2 ldi R24,45
00C8 8883 std y+0,R24
00CA 2227 clr R18
00CC 07E0 ldi R16,7
00CE 0E940000 xcall _LCD_write_char
00D2 .dbline 63
00D2 40910300 lds R20,_time_buf+3
00D6 4295 swap R20
00D8 4F70 andi R20,#0x0F
00DA 405D subi R20,208 ; addi 48
00DC .dbline 64
00DC 4883 std y+0,R20
00DE 2227 clr R18
00E0 08E0 ldi R16,8
00E2 0E940000 xcall _LCD_write_char
00E6 .dbline 65
00E6 40910300 lds R20,_time_buf+3
00EA 4F70 andi R20,15
00EC 405D subi R20,208 ; addi 48
00EE .dbline 66
00EE 4883 std y+0,R20
00F0 2227 clr R18
00F2 09E0 ldi R16,9
00F4 0E940000 xcall _LCD_write_char
00F8 .dbline 68
00F8 40910400 lds R20,_time_buf+4
00FC 4295 swap R20
00FE 4F70 andi R20,#0x0F
0100 405D subi R20,208 ; addi 48
0102 .dbline 69
0102 4883 std y+0,R20
0104 21E0 ldi R18,1
0106 08E0 ldi R16,8
0108 0E940000 xcall _LCD_write_char
010C .dbline 70
010C 40910400 lds R20,_time_buf+4
0110 4F70 andi R20,15
0112 405D subi R20,208 ; addi 48
0114 .dbline 71
0114 4883 std y+0,R20
0116 21E0 ldi R18,1
0118 09E0 ldi R16,9
011A 0E940000 xcall _LCD_write_char
011E .dbline 72
011E 8AE3 ldi R24,58
0120 8883 std y+0,R24
0122 21E0 ldi R18,1
0124 0AE0 ldi R16,10
0126 0E940000 xcall _LCD_write_char
012A .dbline 74
012A 40910500 lds R20,_time_buf+5
012E 4295 swap R20
0130 4F70 andi R20,#0x0F
0132 405D subi R20,208 ; addi 48
0134 .dbline 75
0134 4883 std y+0,R20
0136 21E0 ldi R18,1
0138 0BE0 ldi R16,11
013A 0E940000 xcall _LCD_write_char
013E .dbline 76
013E 40910500 lds R20,_time_buf+5
0142 4F70 andi R20,15
0144 405D subi R20,208 ; addi 48
0146 .dbline 77
0146 4883 std y+0,R20
0148 21E0 ldi R18,1
014A 0CE0 ldi R16,12
014C 0E940000 xcall _LCD_write_char
0150 .dbline 78
0150 8AE3 ldi R24,58
0152 8883 std y+0,R24
0154 21E0 ldi R18,1
0156 0DE0 ldi R16,13
0158 0E940000 xcall _LCD_write_char
015C .dbline 80
015C 40910600 lds R20,_time_buf+6
0160 4295 swap R20
0162 4F70 andi R20,#0x0F
0164 405D subi R20,208 ; addi 48
0166 .dbline 81
0166 4883 std y+0,R20
0168 21E0 ldi R18,1
016A 0EE0 ldi R16,14
016C 0E940000 xcall _LCD_write_char
0170 .dbline 82
0170 40910600 lds R20,_time_buf+6
0174 4F70 andi R20,15
0176 405D subi R20,208 ; addi 48
0178 .dbline 83
0178 4883 std y+0,R20
017A 21E0 ldi R18,1
017C 0FE0 ldi R16,15
017E 0E940000 xcall _LCD_write_char
0182 .dbline 84
0182 L3:
0182 .dbline 42
0182 5BCF xjmp L2
0184 X0:
0184 .dbline -2
0184 L1:
0184 2196 adiw R28,1
0186 .dbline 0 ; func end
0186 0895 ret
0188 .dbsym r temp 20 c
0188 .dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -