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

📄 ds1203.lst

📁 DS1302
💻 LST
📖 第 1 页 / 共 5 页
字号:
    0132 9508      RET
_DS1302_WriteTime:
  time                 --> R20
  ddr                  --> R22
    0133 D6C7      RCALL	push_gset2
(0171)  }
(0172) /*cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
(0173)                         定义DS1302矫正时间程序
(0174) ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc*/
(0175) void DS1302_WriteTime(void)
(0176) {char *ddr,*time;
(0177)  ddr=WriteAddress;
    0134 E660      LDI	R22,0x60
    0135 E070      LDI	R23,0
(0178)  time=WriteTime;
    0136 E647      LDI	R20,0x67
    0137 E050      LDI	R21,0
    0138 C009      RJMP	0x0142
(0179)  while(*ddr)
(0180)  {
(0181)  DS1302_WriteT(*ddr,*time);
    0139 01FA      MOVW	R30,R20
    013A 8120      LDD	R18,Z+0
    013B 01FB      MOVW	R30,R22
    013C 8100      LDD	R16,Z+0
    013D DF4F      RCALL	_DS1302_WriteT
(0182)  ddr++;
    013E 5F6F      SUBI	R22,0xFF
    013F 4F7F      SBCI	R23,0xFF
(0183)  time++;
    0140 5F4F      SUBI	R20,0xFF
    0141 4F5F      SBCI	R21,0xFF
    0142 01FB      MOVW	R30,R22
    0143 8020      LDD	R2,Z+0
    0144 2022      TST	R2
    0145 F799      BNE	0x0139
    0146 D6AA      RCALL	pop_gset2
    0147 9508      RET
FILE: E:\biyesheji\SUCCES~1\SENDSE~1\SETPFI~2\程序\DELAY.C
(0001) 
(0002) #define XTAL 1    //晶振频率,单位MHz  定义为全局变量
(0003) 
(0004) void delay_1us(void)                 //1us延时函数
(0005)   {
(0006)    asm("nop");
_delay_1us:
    0148 0000      NOP
    0149 9508      RET
_delay_nus:
  i                    --> R20
  n                    --> R22
    014A D6B0      RCALL	push_gset2
    014B 01B8      MOVW	R22,R16
(0007)   }
(0008) 
(0009) void delay_nus(unsigned int n)       //N us延时函数
(0010)   {
(0011)    unsigned int i=0;
    014C 2744      CLR	R20
    014D 2755      CLR	R21
(0012)    for (i=0;i<n;i++)
    014E C003      RJMP	0x0152
(0013)    delay_1us();
    014F DFF8      RCALL	_delay_1us
    0150 5F4F      SUBI	R20,0xFF
    0151 4F5F      SBCI	R21,0xFF
    0152 1746      CP	R20,R22
    0153 0757      CPC	R21,R23
    0154 F3D0      BCS	0x014F
    0155 D69B      RCALL	pop_gset2
    0156 9508      RET
(0014)   }
(0015)   
(0016) void delay_1ms(void)                 //1ms延时函数
(0017)   {
(0018)    unsigned int i;
(0019)    for (i=0;i<(unsigned int)(XTAL*143-2);i++);
_delay_1ms:
  i                    --> R16
    0157 2700      CLR	R16
    0158 2711      CLR	R17
    0159 C002      RJMP	0x015C
    015A 5F0F      SUBI	R16,0xFF
    015B 4F1F      SBCI	R17,0xFF
    015C 380D      CPI	R16,0x8D
    015D E0E0      LDI	R30,0
    015E 071E      CPC	R17,R30
    015F F3D0      BCS	0x015A
    0160 9508      RET
_delay_nms:
  i                    --> R20
  n                    --> R22
    0161 D699      RCALL	push_gset2
    0162 01B8      MOVW	R22,R16
(0020)   }
(0021)   
(0022) void delay_nms(unsigned int n)       //N ms延时函数
(0023)   {
(0024)    unsigned int i=0;
    0163 2744      CLR	R20
    0164 2755      CLR	R21
(0025)    for (i=0;i<n;i++)
    0165 C003      RJMP	0x0169
(0026)    {
(0027)       delay_1ms();
    0166 DFF0      RCALL	_delay_1ms
    0167 5F4F      SUBI	R20,0xFF
    0168 4F5F      SBCI	R21,0xFF
    0169 1746      CP	R20,R22
    016A 0757      CPC	R21,R23
    016B F3D0      BCS	0x0166
    016C D684      RCALL	pop_gset2
    016D 9508      RET
FILE: E:\biyesheji\SUCCES~1\SENDSE~1\SETPFI~2\程序\DS1302.c
(0001) //ICC-AVR 修改日期: 2007-05-01 15:38:44
(0002) //PC3:功能按键
(0003) //PC4:移位按键
(0004) //PC5:加一按键
(0005) //PB0:减一按键
(0006) //  CenWenJiao
(0007) // Target : M8
(0008) // Crystal: 1.0000Mhz
(0009) //2007.05.01 21:08:CC 完成时间调整程序
(0010) #include <iom8v.h>
(0011) #include <macros.h>
(0012) #include "ds1302.h"
(0013) #include "DELAY.C"
(0014) #include "LCD.h"    //eureka
(0015) 
(0016) /*cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
(0017)                              单片机初始化程序
(0018) ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc*/
(0019) void port_init(void) //设置portb和portc端口
(0020) {
(0021)  PORTB = 0x01;//PB0 作为减一按键
_port_init:
    016E E081      LDI	R24,1
    016F BB88      OUT	0x18,R24
(0022)  DDRB  = 0x00;
    0170 2422      CLR	R2
    0171 BA27      OUT	0x17,R2
(0023)  PORTC = 0x38; //m103 output only//PC3; PC4; PC5; 功能,移位,加一
    0172 E388      LDI	R24,0x38
    0173 BB85      OUT	0x15,R24
(0024)  DDRC  = 0xC7;  
    0174 EC87      LDI	R24,0xC7
    0175 BB84      OUT	0x14,R24
(0025)  PORTD = 0x00;
    0176 BA22      OUT	0x12,R2
(0026)  DDRD  = 0xFF;
    0177 EF8F      LDI	R24,0xFF
    0178 BB81      OUT	0x11,R24
    0179 9508      RET
(0027) }
(0028) /*ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
(0029)      1302初始化驱动
(0030) cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc*/
(0031) void init_devices(void)
(0032) {
(0033)  //CLI(); //disable all interrupts
(0034)  port_init();
_init_devices:
    017A DFF3      RCALL	_port_init
(0035)  DS1302_set();
    017B DEE5      RCALL	_DS1302_set
(0036)  //timer1_init();
(0037)  MCUCR = 0x00;
    017C 2422      CLR	R2
    017D BE25      OUT	0x35,R2
(0038)  GICR  = 0x00;
    017E BE2B      OUT	0x3B,R2
(0039)  TIMSK = 0x04; 
    017F E084      LDI	R24,4
    0180 BF89      OUT	0x39,R24
    0181 9508      RET
(0040)  //SEI(); //re-enable interrupts
(0041) }
(0042) /*ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
(0043)      LCD1602初始化驱动
(0044) cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc*/
(0045) void init_devicesl(void)
(0046) {
(0047)   //CLI(); //disable all interrupts
(0048)   LCD_init();
_init_devicesl:
    0182 D5EB      RCALL	_LCD_init
(0049)  // DS1302_set();
(0050)   MCUCR = 0x00;
    0183 2422      CLR	R2
    0184 BE25      OUT	0x35,R2
(0051)   GICR  = 0x00;
    0185 BE2B      OUT	0x3B,R2
(0052)   TIMSK = 0x00; //timer interrupt sources
    0186 BE29      OUT	0x39,R2
    0187 9508      RET
_SendDataForDisplay:
    0188 9722      SBIW	R28,2
(0053)  // SEI(); //re-enable interrupts
(0054) }
(0055) /*ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
(0056)      基本的显示程序
(0057) cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc*/
(0058) void SendDataForDisplay(void)
(0059) {
(0060)     //DS1302_ReadTime();
(0061)     //DataFenli();
(0062)   
(0063)     LCD_write_string(0,0,"time:");  
    0189 EB85      LDI	R24,0xB5
    018A E090      LDI	R25,0
    018B 8399      STD	Y+1,R25
    018C 8388      STD	Y+0,R24
    018D 2722      CLR	R18
    018E 2700      CLR	R16
    018F D643      RCALL	_LCD_write_string
(0064)     LCD_write_char(6,0,hourth+48);  //时
    0190 918000C8  LDS	R24,hourth
    0192 5D80      SUBI	R24,0xD0
    0193 8388      STD	Y+0,R24
    0194 2722      CLR	R18
    0195 E006      LDI	R16,6
    0196 D650      RCALL	_LCD_write_char
(0065) 	LCD_write_char(7,0,hourtl+48);
    0197 918000C9  LDS	R24,hourtl
    0199 5D80      SUBI	R24,0xD0
    019A 8388      STD	Y+0,R24
    019B 2722      CLR	R18
    019C E007      LDI	R16,7
    019D D649      RCALL	_LCD_write_char
(0066) 	LCD_write_char(8,0,45);
    019E E28D      LDI	R24,0x2D
    019F 8388      STD	Y+0,R24
    01A0 2722      CLR	R18
    01A1 E008      LDI	R16,0x8
    01A2 D644      RCALL	_LCD_write_char
(0067) 	LCD_write_char(9,0,minuteth+48);  //分
    01A3 918000CA  LDS	R24,minuteth
    01A5 5D80      SUBI	R24,0xD0
    01A6 8388      STD	Y+0,R24
    01A7 2722      CLR	R18
    01A8 E009      LDI	R16,0x9
    01A9 D63D      RCALL	_LCD_write_char
(0068) 	LCD_write_char(10,0,minutetl+48);
    01AA 918000CB  LDS	R24,minutetl
    01AC 5D80      SUBI	R24,0xD0
    01AD 8388      STD	Y+0,R24
    01AE 2722      CLR	R18
    01AF E00A      LDI	R16,0xA
    01B0 D636      RCALL	_LCD_write_char
(0069) 	LCD_write_char(11,0,45);
    01B1 E28D      LDI	R24,0x2D
    01B2 8388      STD	Y+0,R24
    01B3 2722      CLR	R18
    01B4 E00B      LDI	R16,0xB
    01B5 D631      RCALL	_LCD_write_char
(0070) 	LCD_write_char(12,0,secondth+48);
    01B6 918000CC  LDS	R24,secondth
    01B8 5D80      SUBI	R24,0xD0
    01B9 8388      STD	Y+0,R24
    01BA 2722      CLR	R18
    01BB E00C      LDI	R16,0xC
    01BC D62A      RCALL	_LCD_write_char
(0071)     LCD_write_char(13,0,secondtl+48); //秒
    01BD 918000CD  LDS	R24,secondtl
    01BF 5D80      SUBI	R24,0xD0
    01C0 8388      STD	Y+0,R24
    01C1 2722      CLR	R18
    01C2 E00D      LDI	R16,0xD
    01C3 D623      RCALL	_LCD_write_char
(0072)     
(0073)     LCD_write_string(0,1,"data:");
    01C4 EA8F      LDI	R24,0xAF
    01C5 E090      LDI	R25,0
    01C6 8399      STD	Y+1,R25
    01C7 8388      STD	Y+0,R24
    01C8 E021      LDI	R18,1
    01C9 2700      CLR	R16
    01CA D608      RCALL	_LCD_write_string
(0074)     LCD_write_char(6,1,yearth+48);
    01CB 918000C2  LDS	R24,yearth
    01CD 5D80      SUBI	R24,0xD0
    01CE 8388      STD	Y+0,R24
    01CF E021      LDI	R18,1
    01D0 E006      LDI	R16,6
    01D1 D615      RCALL	_LCD_write_char
(0075) 	LCD_write_char(7,1,yeartl+48);  //年
    01D2 918000C3  LDS	R24,yeartl
    01D4 5D80      SUBI	R24,0xD0
    01D5 8388      STD	Y+0,R24
    01D6 E021      LDI	R18,1
    01D7 E007      LDI	R16,7
    01D8 D60E      RCALL	_LCD_write_char
(0076) 	LCD_write_char(8,1,45);
    01D9 E28D      LDI	R24,0x2D
    01DA 8388      STD	Y+0,R24
    01DB E021      LDI	R18,1
    01DC E008      LDI	R16,0x8
    01DD D609      RCALL	_LCD_write_char
(0077) 	LCD_write_char(9,1,monthth+48);  //月
    01DE 918000C4  LDS	R24,monthth
    01E0 5D80      SUBI	R24,0xD0
    01E1 8388      STD	Y+0,R24
    01E2 E021      LDI	R18,1
    01E3 E009      LDI	R16,0x9
    01E4 D602      RCALL	_LCD_write_char
(0078) 	LCD_write_char(10,1,monthtl+48);
    01E5 918000C5  LDS	R24,monthtl
    01E7 5D80      SUBI	R24,0xD0
    01E8 8388      STD	Y+0,R24
    01E9 E021      LDI	R18,1
    01EA E00A      LDI	R16,0xA
    01EB D5FB      RCALL	_LCD_write_char
(0079) 	LCD_write_char(11,1,45);
    01EC E28D      LDI	R24,0x2D
    01ED 8388      STD	Y+0,R24
    01EE E021      LDI	R18,1
    01EF E00B      LDI	R16,0xB
    01F0 D5F6      RCALL	_LCD_write_char
(0080) 	LCD_write_char(12,1,dateth+48);  //日
    01F1 918000C6  LDS	R24,dateth
    01F3 5D80      SUBI	R24,0xD0
    01F4 8388      STD	Y+0,R24
    01F5 E021      LDI	R18,1
    01F6 E00C      LDI	R16,0xC
    01F7 D5EF      RCALL	_LCD_write_char
(0081)     LCD_write_char(13,1,datetl+48); 
    01F8 918000C7  LDS	R24,datetl
    01FA 5D80      SUBI	R24,0xD0
    01FB 8388      STD	Y+0,R24
    01FC E021      LDI	R18,1
    01FD E00D      LDI	R16,0xD
    01FE D5E8      RCALL	_LCD_write_char
(0082)    
(0083)    delay_nus(200);
    01FF EC08      LDI	R16,0xC8
    0200 E010      LDI	R17,0
    0201 DF48      RCALL	_delay_nus
    0202 9622      ADIW	R28,2
    0203 9508      RET
_black:
  n                    --> R22
  m                    --> R20
    0204 D5F6      RCALL	push_gset2
    0205 01B9      MOVW	R22,R18
    0206 01A8      MOVW	R20,R16
    0207 9721      SBIW	R28,1
(0084) 
(0085) }
(0086) /*ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
(0087)  显示中调用的闪烁调用程序
(0088) cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc*/
(0089)  void black(int m,int n)//闪烁
(0090)  {
(0091)  LCD_write_char(m,n,95);//95为闪烁时"下滑线"的代码
    0208 E58F      LDI	R24,0x5F
    0209 8388      STD	Y+0,R24
    020A 2F26      MOV	R18,R22
    020B 2F04      MOV	R16,R20
    020C D5DA      RCALL	_LCD_write_char
(0092)   delay_nus(1000);
    020D EE08      LDI	R16,0xE8
    020E E013      LDI	R17,3
    020F DF3A      RCALL	_delay_nus
    0210 9621      ADIW	R28,1
    0211 D5DF      RCALL	pop_gset2
    0212 9508      RET
(0093)  }
(0094) /*cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc*/
(0095)   /*设置分钟,秒,加法子程序*/
(0096) /*cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc*/
(0097) void PlusForSET(int i)           
(0098) 	       {    
(0099) 	        if(WriteTime[i]==0x09)  //writetime[i] 是定义存储写地址的数组
_PlusForSET:
  i                    --> R16
    0213 E687      LDI	R24,0x67
    0214 E090      LDI	R25,0
    0215 01F8      MOVW	R30,R16
    0216 0FE8      ADD	R30,R24
    0217 1FF9      ADC	R31,R25
    0218 8180      LDD	R24,Z+0
    0219 3089      CPI	R24,0x9
    021A F439      BNE	0x0222
(0100) 			{ WriteTime[i]=0x0f;
    021B E687      LDI	R24,0x67
    021C E090      LDI	R25,0
    021D 01F8      MOVW	R30,R16
    021E 0FE8      ADD	R30,R24
    021F 1FF9      ADC	R31,R25
    0220 E08F      LDI	R24,0xF
    0221 8380      STD	Z+0,R24
(0101) 			  }
(0102) 			if(WriteTime[i]==0x19)
    0222 E687      LDI	R24,0x67
    0223 E090      LDI	R25,0
    0224 01F8      MOVW	R30,R16
    0225 0FE8      ADD	R30,R24
    0226 1FF9      ADC	R31,R25
    0227 8180      LDD	R24,Z+0
    0228 3189      CPI	R24,0x19

⌨️ 快捷键说明

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