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

📄 ds1302_mega16.lis

📁 这是一个用温度计和时钟程序,芯片是ATmega16,电路稳定,绝对好用而且易懂
💻 LIS
📖 第 1 页 / 共 5 页
字号:
 03DC                   .dbline 149
 03DC 4830              cpi R20,8
 03DE 98F3              brlo L86
 03E0           X18:
 03E0                   .dbline -2
 03E0           L85:
 03E0                   .dbline 0 ; func end
 03E0 0C940000          xjmp pop_xgsetF00C
 03E4                   .dbsym r temp 22 c
 03E4                   .dbsym r i 20 c
 03E4                   .dbsym r cmd 10 c
 03E4                   .dbend
 03E4                   .dbfunc e Write_1 _Write_1 fV
                        .even
 03E4           _Write_1::
 03E4                   .dbline -1
 03E4                   .dbline 171
 03E4           ; }
 03E4           ; /************************************************
 03E4           ; 函 数 名:Write_1
 03E4           ; 功    能:写一个Bit到DS18B20
 03E4           ; 入口参数:无
 03E4           ; 出口参数:无
 03E4           ; 修改日期:2007.02.16
 03E4           ; ************************************************/
 03E4           ; void Write_1(void)
 03E4           ; {
 03E4                   .dbline 172
 03E4           ;        Set_low();                       //设置成输出模式
 03E4                   .dbline 172
 03E4 8F9A              sbi 0x11,7
 03E6                   .dbline 172
 03E6 9798              cbi 0x12,7
 03E8                   .dbline 172
 03E8                   .dbline 173
 03E8           ;        Delay_us(4);
 03E8 04E0              ldi R16,4
 03EA 10E0              ldi R17,0
 03EC 9EDF              xcall _Delay_us
 03EE                   .dbline 174
 03EE           ;        Set_high();
 03EE                   .dbline 174
 03EE 8F9A              sbi 0x11,7
 03F0                   .dbline 174
 03F0 979A              sbi 0x12,7
 03F2                   .dbline 174
 03F2                   .dbline 175
 03F2           ;        Delay_us(76);
 03F2 0CE4              ldi R16,76
 03F4 10E0              ldi R17,0
 03F6 99DF              xcall _Delay_us
 03F8                   .dbline -2
 03F8           L92:
 03F8                   .dbline 0 ; func end
 03F8 0895              ret
 03FA                   .dbend
 03FA                   .dbfunc e Write_0 _Write_0 fV
                        .even
 03FA           _Write_0::
 03FA                   .dbline -1
 03FA                   .dbline 185
 03FA           ; }
 03FA           ; /**********************************************
 03FA           ; 函 数 名:Write_0
 03FA           ; 功    能:写一个Bit到DS18B20
 03FA           ; 入口参数:无
 03FA           ; 出口参数:无
 03FA           ; 修改日期:2007.02.16
 03FA           ; **********************************************/
 03FA           ; void Write_0(void)
 03FA           ; {
 03FA                   .dbline 186
 03FA           ;        Set_low();
 03FA                   .dbline 186
 03FA 8F9A              sbi 0x11,7
 03FC                   .dbline 186
 03FC 9798              cbi 0x12,7
 03FE                   .dbline 186
 03FE                   .dbline 187
 03FE           ;        Delay_us(80);
 03FE 00E5              ldi R16,80
 0400 10E0              ldi R17,0
 0402 93DF              xcall _Delay_us
 0404                   .dbline 188
 0404           ;        Set_high();
 0404                   .dbline 188
 0404 8F9A              sbi 0x11,7
 0406                   .dbline 188
 0406 979A              sbi 0x12,7
 0408                   .dbline 188
 0408                   .dbline -2
 0408           L93:
 0408                   .dbline 0 ; func end
 0408 0895              ret
 040A                   .dbend
                        .area lit(rom, con, rel)
 0000           _Time::
 0000 1005              .byte 16,5
 0002 2325              .byte 35,37
 0004 0505              .byte 5,5
 0006 07                .byte 7
 0007                   .dbfile E:\MyDesign\ICCAVR\ATmega16_DEV\DS1302\DS1302_Mega16.c
 0007                   .dbsym e Time _Time A[7:7]kc
                        .area data(ram, con, rel)
 0000                   .dbfile E:\MyDesign\ICCAVR\ATmega16_DEV\DS1302\DS1302_Mega16.c
 0000           _Day::
 0000                   .blkb 4
                        .area idata
 0000 4D6F6E00          .byte 'M,'o,'n,0
                        .area data(ram, con, rel)
 0004                   .dbfile E:\MyDesign\ICCAVR\ATmega16_DEV\DS1302\DS1302_Mega16.c
 0004                   .blkb 4
                        .area idata
 0004 54756500          .byte 'T,'u,'e,0
                        .area data(ram, con, rel)
 0008                   .dbfile E:\MyDesign\ICCAVR\ATmega16_DEV\DS1302\DS1302_Mega16.c
 0008                   .blkb 4
                        .area idata
 0008 57656400          .byte 'W,'e,'d,0
                        .area data(ram, con, rel)
 000C                   .dbfile E:\MyDesign\ICCAVR\ATmega16_DEV\DS1302\DS1302_Mega16.c
 000C                   .blkb 4
                        .area idata
 000C 54687500          .byte 'T,'h,'u,0
                        .area data(ram, con, rel)
 0010                   .dbfile E:\MyDesign\ICCAVR\ATmega16_DEV\DS1302\DS1302_Mega16.c
 0010                   .blkb 4
                        .area idata
 0010 46726900          .byte 'F,'r,'i,0
                        .area data(ram, con, rel)
 0014                   .dbfile E:\MyDesign\ICCAVR\ATmega16_DEV\DS1302\DS1302_Mega16.c
 0014                   .blkb 4
                        .area idata
 0014 53617400          .byte 'S,'a,'t,0
                        .area data(ram, con, rel)
 0018                   .dbfile E:\MyDesign\ICCAVR\ATmega16_DEV\DS1302\DS1302_Mega16.c
 0018                   .blkb 4
                        .area idata
 0018 53756E00          .byte 'S,'u,'n,0
                        .area data(ram, con, rel)
 001C                   .dbfile E:\MyDesign\ICCAVR\ATmega16_DEV\DS1302\DS1302_Mega16.c
 001C                   .dbsym e Day _Day A[28:7:4]c
                        .area lit(rom, con, rel)
 0007           _Number::
 0007 3031              .byte 48,49
 0009 3233              .byte 50,51
 000B 3435              .byte 52,53
 000D 3637              .byte 54,55
 000F 3839              .byte 56,57
 0011                   .dbsym e Number _Number A[10:10]kc
                        .area text(rom, con, rel)
 040A                   .dbfile E:\MyDesign\ICCAVR\ATmega16_DEV\DS1302\DS1302_Mega16.c
 040A                   .dbfunc e main _main fV
 040A           ;              i -> R20
                        .even
 040A           _main::
 040A 2197              sbiw R28,1
 040C                   .dbline -1
 040C                   .dbline 52
 040C           ; /****************************************
 040C           ; 工      程:DS1302实时时钟+DS18B20+1602液晶6线显示
 040C           ; 创建日期:2007年3月30日
 040C           ; 修改日期:2007年3月31日
 040C           ; 创 建 人:朱海峰
 040C           ; 邮    箱:ntzhf100@163.com
 040C           ; Q      Q: 543376422
 040C           ; *****************************************/
 040C           ; #include <iom16v.h>
 040C           ; #include <macros.h>
 040C           ; #include "def.h"
 040C           ; #include "LCD_1602_4wires.h"
 040C           ; #include "DS18B20.h"
 040C           ; /******************************************
 040C           ; PIN DEFINE:
 040C           ; /RST     PD6
 040C           ; SCLK   PD4
 040C           ; IO             PD5
 040C           ; ******************************************/
 040C           ; /***************************************************************
 040C           ; COMMAND/ADDRESS FORMAT
 040C           ;       bit7    bit6    bit5    bit4    bit3    bit2    bit1    bit0
 040C           ;        1              RAM/CK   A4              A3              A2              A1              A0             R/W
 040C           ; ***************************************************************/
 040C           ; //        second,mintue,hour,date,month,day,year,control,trickle charge,clock burst
 040C           ; //adderss:     0              1        2    3    4     5   6    7           8             9
 040C           ; /**************************************************************/
 040C           ; 
 040C           ; void Time_Init(const uint8_t *p_time);
 040C           ; void ChipInit(void);
 040C           ; void InitDS1302(void);
 040C           ; void TimeSet(void);
 040C           ; void ReadTime(void);
 040C           ; void DisplayTime(void);
 040C           ; void LCD_display_init(void);
 040C           ; void Display(uint8_t x, uint8_t y, uint8_t g_data);
 040C           ; void DS18B20(void);
 040C           ; //RAM_CLOCK=1,RAM操作;
 040C           ; //RAM_CLOCK=0,时钟日历操作;
 040C           ; unsigned char Read_DS1302(uint8_t RAM_CLOCK, uint8_t Address);
 040C           ; void Write(uint8_t RAM_CLOCK, uint8_t Address, uint8_t Dat);  
 040C           ; 
 040C           ; /*******************************************/
 040C           ; //second,mintue,hour,date,month,day,year
 040C           ; const uint8_t Time[]={0x10,0x05,0x23,0x25,0x05,0x05,0x07};    
 040C           ; uint8_t Day[7][4]={{"Mon"},{"Tue"},{"Wed"},{"Thu"},{"Fri"},{"Sat"},{"Sun"}};
 040C           ; const uint8_t Number[]={'0','1','2','3','4','5','6','7','8','9'};
 040C           ; unsigned char g_year,g_month,g_date,g_day,g_hour,g_mintue,g_second;
 040C           ; //uint8_t g_tempeature;
 040C           ; /******************************************/
 040C           ; void main(void)
 040C           ; {
 040C                   .dbline 54
 040C           ;        uint8_t   i;
 040C           ;        ChipInit();
 040C 1CD0              xcall _ChipInit
 040E                   .dbline 55
 040E           ;        LCD_init();
 040E F8DD              xcall _LCD_init
 0410                   .dbline 56
 0410           ;        InitDS1302();
 0410 28D0              xcall _InitDS1302
 0412                   .dbline 57
 0412           ;        Write(0,0x07,0x00);                    //CLOCK操作,控制寄存器,解除写保护
 0412 2224              clr R2
 0414 2882              std y+0,R2
 0416 27E0              ldi R18,7
 0418 0027              clr R16
 041A EED0              xcall _Write
 041C                   .dbline 58
 041C           ;        Time_Init(&Time[0]);                   //初始化时间
 041C 00E0              ldi R16,<_Time
 041E 10E0              ldi R17,>_Time
 0420 24D0              xcall _Time_Init
 0422                   .dbline 59
 0422           ;        LCD_display_init();
 0422 3AD0              xcall _LCD_display_init
 0424 0DC0              xjmp L96
 0426           L95:
 0426                   .dbline 61
 0426           ;        while(1)
 0426           ;        {
 0426                   .dbline 62
 0426           ;               for(i=0;i<50;i++)
 0426 4427              clr R20
 0428 09C0              xjmp L101
 042A           L98:
 042A                   .dbline 63
 042A           ;               {
 042A                   .dbline 64
 042A           ;               ReadTime();
 042A 50D0              xcall _ReadTime
 042C                   .dbline 65
 042C           ;               DisplayTime();
 042C 89D0              xcall _DisplayTime
 042E                   .dbline 66
 042E           ;                       if(i == 0)
 042E 4423              tst R20
 0430 09F4              brne L102
 0432           X19:
 0432                   .dbline 67
 0432           ;                       {
 0432                   .dbline 69
 0432           ;                                //BEEP_ON();
 0432           ;                                DS18B20();
 0432 4CD1              xcall _DS18B20
 0434                   .dbline 71
 0434           ;                                //BEEP_OFF();
 0434           ;                       }
 0434           L102:
 0434                   .dbline 72
 0434           ;               Delay_nms(100);
 0434 04E6              ldi R16,100
 0436 10E0              ldi R17,0
 0438 7CDE              xcall _Delay_nms
 043A                   .dbline 73
 043A           ;               }       
 043A           L99:
 043A                   .dbline 62
 043A 4395              inc R20
 043C           L101:
 043C                   .dbline 62
 043C 4233              cpi R20,50
 043E A8F3              brlo L98
 0440           X20:
 0440                   .dbline 74
 0440           ;        }
 0440           L96:
 0440                   .dbline 60
 0440 F2CF              xjmp L95
 0442           X21:
 0442                   .dbline -2
 0442           L94:
 0442                   .dbline 0 ; func end
 0442 2196              adiw R28,1
 0444 0895              ret
 0446                   .dbsym r i 20 c
 0446                   .dbend
 0446                   .dbfunc e ChipInit _ChipInit fV
                        .even
 0446           _ChipInit::
 0446                   .dbline -1
 0446                   .dbline 78
 0446           ; }
 0446           ; /******************************************/
 0446           ; void ChipInit(void)
 0446           ; {
 0446                   .dbline 79
 0446           ;        NOP();
 0446 0000              nop
 0448                   .dbline 81
 0448           ; /*********************I/O口初始化**************************/   
 0448           ;        LCD_DATA_DDR |= LCD_DATA_MASK;                 //液晶数据口线
 0448 87B3              in R24,0x17
 044A 8F60              ori R24,15
 044C 87BB

⌨️ 快捷键说明

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