📄 ds1302_mega16.lis
字号:
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 + -