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

📄 main.lis

📁 用AVR单片机做的一些程序,包括跑马灯显示,PWM产生,ADC转换等
💻 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 + -