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

📄 time_8515.lst

📁 AVR开发板例子源代码
💻 LST
📖 第 1 页 / 共 3 页
字号:
_out_data_pc232:
  time2                --> Y+16
  time1                --> Y+0
  i                    --> R20
    019D D0B5      RCALL	push_gset1
    019E 97A0      SBIW	R28,0x20
(0309) }
(0310) /********************************************************
(0311)   子程序名:   out_data_pc232()
(0312)   功    能:   串口发送时间数据到PC,
(0313)   输入参数:   /
(0314)   输出参数:   /
(0315)   描    述:   包括"当前的温度是:xxx.xx摄氏度",此程序借助LCD的显示缓冲区
(0316) ********************************************************/
(0317) void out_data_pc232(void) 
(0318) {
(0319) 	 uchar i;
(0320) 	 uchar time1[16]="  今天的日期是:";
    019F E282      LDI	R24,0x22
    01A0 E090      LDI	R25,0
    01A1 01FE      MOVW	R30,R28
    01A2 E100      LDI	R16,0x10
    01A3 E010      LDI	R17,0
    01A4 93FA      ST	R31,-Y
    01A5 93EA      ST	R30,-Y
    01A6 939A      ST	R25,-Y
    01A7 938A      ST	R24,-Y
    01A8 D0C7      RCALL	asgncblk
(0321) 	 uchar time2[16]="  当前的时间是:";
    01A9 E382      LDI	R24,0x32
    01AA E090      LDI	R25,0
    01AB 01FE      MOVW	R30,R28
    01AC 9670      ADIW	R30,0x10
    01AD E100      LDI	R16,0x10
    01AE E010      LDI	R17,0
    01AF 93FA      ST	R31,-Y
    01B0 93EA      ST	R30,-Y
    01B1 939A      ST	R25,-Y
    01B2 938A      ST	R24,-Y
    01B3 D0BC      RCALL	asgncblk
(0322) 	 
(0323)      for(i=0;i<16;i++)    //向串口发送数据
    01B4 2744      CLR	R20
    01B5 C008      RJMP	0x01BE
(0324)      { 
(0325)          write_pc232(time1[i]);
    01B6 01CE      MOVW	R24,R28
    01B7 2FE4      MOV	R30,R20
    01B8 27FF      CLR	R31
    01B9 0FE8      ADD	R30,R24
    01BA 1FF9      ADC	R31,R25
    01BB 8100      LDD	R16,Z+0
    01BC DF73      RCALL	_write_pc232
    01BD 9543      INC	R20
    01BE 3140      CPI	R20,0x10
    01BF F3B0      BCS	0x01B6
(0326)      } 
(0327) 	  write_pc232('2');            //年
    01C0 E302      LDI	R16,0x32
    01C1 DF6E      RCALL	_write_pc232
(0328) 	  write_pc232('0');
    01C2 E300      LDI	R16,0x30
    01C3 DF6C      RCALL	_write_pc232
(0329) 	  write_pc232(buf_time[7]);
    01C4 91000067  LDS	R16,0x67
    01C6 DF69      RCALL	_write_pc232
(0330) 	  write_pc232(buf_time[8]);
    01C7 91000068  LDS	R16,0x68
    01C9 DF66      RCALL	_write_pc232
(0331) 	  write_pc232('-');
    01CA E20D      LDI	R16,0x2D
    01CB DF64      RCALL	_write_pc232
(0332) 	  write_pc232(buf_time[10]);   //月
    01CC 9100006A  LDS	R16,0x6A
    01CE DF61      RCALL	_write_pc232
(0333) 	  write_pc232(buf_time[11]);
    01CF 9100006B  LDS	R16,0x6B
    01D1 DF5E      RCALL	_write_pc232
(0334) 	  write_pc232('-');
    01D2 E20D      LDI	R16,0x2D
    01D3 DF5C      RCALL	_write_pc232
(0335) 	  write_pc232(buf_time[13]);   //日
    01D4 9100006D  LDS	R16,0x6D
    01D6 DF59      RCALL	_write_pc232
(0336) 	  write_pc232(buf_time[14]);
    01D7 9100006E  LDS	R16,0x6E
    01D9 DF56      RCALL	_write_pc232
(0337) 	  
(0338)      for(i=0;i<16;i++)    //向串口发送数据
    01DA 2744      CLR	R20
    01DB C009      RJMP	0x01E5
(0339)      { 
(0340)          write_pc232(time2[i]);
    01DC 01CE      MOVW	R24,R28
    01DD 9640      ADIW	R24,0x10
    01DE 2FE4      MOV	R30,R20
    01DF 27FF      CLR	R31
    01E0 0FE8      ADD	R30,R24
    01E1 1FF9      ADC	R31,R25
    01E2 8100      LDD	R16,Z+0
    01E3 DF4C      RCALL	_write_pc232
    01E4 9543      INC	R20
    01E5 3140      CPI	R20,0x10
    01E6 F3A8      BCS	0x01DC
(0341)      } 
(0342) 	  write_pc232(buf_time[22]);   //时
    01E7 91000076  LDS	R16,0x76
    01E9 DF46      RCALL	_write_pc232
(0343) 	  write_pc232(buf_time[23]);
    01EA 91000077  LDS	R16,0x77
    01EC DF43      RCALL	_write_pc232
(0344) 	  write_pc232(':');
    01ED E30A      LDI	R16,0x3A
    01EE DF41      RCALL	_write_pc232
(0345) 	  write_pc232(buf_time[25]);   //分
    01EF 91000079  LDS	R16,0x79
    01F1 DF3E      RCALL	_write_pc232
(0346) 	  write_pc232(buf_time[26]);
    01F2 9100007A  LDS	R16,0x7A
    01F4 DF3B      RCALL	_write_pc232
(0347) 	  write_pc232(':');
    01F5 E30A      LDI	R16,0x3A
    01F6 DF39      RCALL	_write_pc232
(0348) 	  write_pc232(buf_time[28]);   //秒
    01F7 9100007C  LDS	R16,0x7C
    01F9 DF36      RCALL	_write_pc232
(0349) 	  write_pc232(buf_time[29]);
    01FA 9100007D  LDS	R16,0x7D
    01FC DF33      RCALL	_write_pc232
(0350) 	  
(0351) 	  write_pc232('\n'); 
    01FD E00A      LDI	R16,0xA
    01FE DF31      RCALL	_write_pc232
(0352)  	  write_pc232('\r'); //显示回车换行
    01FF E00D      LDI	R16,0xD
    0200 DF2F      RCALL	_write_pc232
    0201 96A0      ADIW	R28,0x20
    0202 D053      RCALL	pop_gset1
    0203 9508      RET
_main:
  buf_logo             --> Y+0
  data_old             --> R20
    0204 97A1      SBIW	R28,0x21
(0353) }
(0354) //*****************主程序**********************************
(0355) void main (void)
(0356) {
(0357)      uchar data_old;
(0358) 	 uchar buf_logo[]="    welcome!      www.itsn.cn!  ";
    0205 E482      LDI	R24,0x42
    0206 E090      LDI	R25,0
    0207 01FE      MOVW	R30,R28
    0208 E201      LDI	R16,0x21
    0209 E010      LDI	R17,0
    020A 93FA      ST	R31,-Y
    020B 93EA      ST	R30,-Y
    020C 939A      ST	R25,-Y
    020D 938A      ST	R24,-Y
    020E D061      RCALL	asgncblk
(0359) 	 
(0360)      mcu_Init();       //单片机初始化
    020F DF2A      RCALL	_mcu_Init
(0361) 	 usart_Init();     //串口初始化
    0210 DF2E      RCALL	_usart_Init
(0362) 	 init_lcd();        //lcd初始化
    0211 DE81      RCALL	_init_lcd
(0363) 	 
(0364) 	 write_pc232('o'); //测试串口
    0212 E60F      LDI	R16,0x6F
    0213 DF1C      RCALL	_write_pc232
(0365)      write_pc232('k'); //测试串口
    0214 E60B      LDI	R16,0x6B
    0215 DF1A      RCALL	_write_pc232
(0366) 	 write_pc232('\n'); 
    0216 E00A      LDI	R16,0xA
    0217 DF18      RCALL	_write_pc232
(0367)  	 write_pc232('\r'); //显示回车换行
    0218 E00D      LDI	R16,0xD
    0219 DF16      RCALL	_write_pc232
(0368) 	 
(0369) 	 display_lcd(buf_logo);  //显示LOGO
    021A 018E      MOVW	R16,R28
    021B DE82      RCALL	_display_lcd
(0370) 	 spk (1000);           //上电蜂鸣器长响
    021C EE08      LDI	R16,0xE8
    021D DF26      RCALL	_spk
(0371) 	 DelaymS(2000);    //长延迟
    021E ED00      LDI	R16,0xD0
    021F E017      LDI	R17,7
    0220 DE45      RCALL	_DelaymS
(0372) 	 display_lcd(buf_time);  //开始工作,LCD刷新显示一屏
    0221 E600      LDI	R16,0x60
    0222 E010      LDI	R17,0
    0223 DE7A      RCALL	_display_lcd
(0373) 	 spk (100);           //开始工作,蜂鸣器短响
    0224 E604      LDI	R16,0x64
    0225 DF1E      RCALL	_spk
(0374) 	 
(0375) 	 //---------此段测试1302是否已经写过内容了,若写过就不再重新写。
(0376) 	 read_DS1302();      //读时间
    0226 DEEC      RCALL	_read_DS1302
(0377) 	 if(buf_read[0] & 0x80)
    0227 90200089  LDS	R2,buf_read
    0229 FE27      SBRS	R2,7
    022A C001      RJMP	0x022C
(0378) 	 {
(0379) 	    write_DS1302();  //写入需要的初始时间值,
    022B DEBD      RCALL	_write_DS1302
(0380) 	 }
(0381) 	 //------------------
(0382) 	 
(0383) 	 DelaymS(1);       //延迟
    022C E001      LDI	R16,1
    022D E010      LDI	R17,0
    022E DE37      RCALL	_DelaymS
(0384) 	 read_DS1302();      //读时间
    022F DEE3      RCALL	_read_DS1302
(0385) 	 data_old = buf_read[0];  //提取旧时钟的秒数值
    0230 91400089  LDS	R20,buf_read
    0232 C013      RJMP	0x0246
(0386) 	 while(1) //无限循环执行,此程序保证了一秒钟更新一次串口数据,更新一次LCD显示。
(0387) 	 {
(0388) 		   DelaymS(10);       //延迟
    0233 E00A      LDI	R16,0xA
    0234 E010      LDI	R17,0
    0235 DE30      RCALL	_DelaymS
(0389) 		   read_DS1302();      //读时间
    0236 DEDC      RCALL	_read_DS1302
(0390) 		   if (data_old == buf_read[0])
    0237 90200089  LDS	R2,buf_read
    0239 1542      CP	R20,R2
    023A F421      BNE	0x023F
(0391) 		   {
(0392) 		       DelaymS(10);       //延迟
    023B E00A      LDI	R16,0xA
    023C E010      LDI	R17,0
    023D DE28      RCALL	_DelaymS
(0393) 		   }
    023E C007      RJMP	0x0246
(0394) 		   else
(0395) 		   {
(0396) 		       data_conversion();  //将读出的数据分开,分别装入显存
    023F DF0E      RCALL	_data_conversion
(0397) 		       display_lcd(buf_time);  //刷新显示一屏
    0240 E600      LDI	R16,0x60
    0241 E010      LDI	R17,0
    0242 DE5B      RCALL	_display_lcd
(0398) 		       out_data_pc232();  //串口将时间数据送PC
    0243 DF59      RCALL	_out_data_pc232
(0399) 			   data_old = buf_read[0]; //更新时钟的秒数值
FILE: <library>
    0244 91400089  LDS	R20,buf_read
    0246 CFEC      RJMP	0x0233
    0247 96A1      ADIW	R28,0x21
    0248 9508      RET
pop_gset2:
    0249 E0E2      LDI	R30,2
    024A C00C      RJMP	pop
push_gset5:
    024B 92FA      ST	R15,-Y
    024C 92EA      ST	R14,-Y
push_gset4:
    024D 92DA      ST	R13,-Y
    024E 92CA      ST	R12,-Y
push_gset3:
    024F 92BA      ST	R11,-Y
    0250 92AA      ST	R10,-Y
push_gset2:
    0251 937A      ST	R23,-Y
    0252 936A      ST	R22,-Y
push_gset1:
    0253 935A      ST	R21,-Y
    0254 934A      ST	R20,-Y
    0255 9508      RET
pop_gset1:
    0256 E0E1      LDI	R30,1
pop:
    0257 9149      LD	R20,Y+
    0258 9159      LD	R21,Y+
    0259 FDE0      SBRC	R30,0
    025A 9508      RET
    025B 9169      LD	R22,Y+
    025C 9179      LD	R23,Y+
    025D FDE1      SBRC	R30,1
    025E 9508      RET
    025F 90A9      LD	R10,Y+
    0260 90B9      LD	R11,Y+
    0261 FDE2      SBRC	R30,2
    0262 9508      RET
    0263 90C9      LD	R12,Y+
    0264 90D9      LD	R13,Y+
    0265 FDE3      SBRC	R30,3
    0266 9508      RET
    0267 90E9      LD	R14,Y+
    0268 90F9      LD	R15,Y+
    0269 9508      RET
lsl8:
    026A 2311      TST	R17
    026B F019      BEQ	0x026F
    026C 0F00      LSL	R16
    026D 951A      DEC	R17
    026E CFFB      RJMP	lsl8
    026F 9508      RET
asgncblk:
    0270 93AA      ST	R26,-Y
    0271 93BA      ST	R27,-Y
    0272 93EA      ST	R30,-Y
    0273 93FA      ST	R31,-Y
    0274 920A      ST	R0,-Y
    0275 81AF      LDD	R26,Y+7
    0276 85B8      LDD	R27,Y+8
    0277 81ED      LDD	R30,Y+5
    0278 81FE      LDD	R31,Y+6
    0279 3000      CPI	R16,0
    027A 0701      CPC	R16,R17
    027B F031      BEQ	0x0282
    027C 95C8      LPM
    027D 920D      ST	R0,X+
    027E 9631      ADIW	R30,1
    027F 5001      SUBI	R16,1
    0280 4010      SBCI	R17,0
    0281 CFF7      RJMP	0x0279
    0282 9009      LD	R0,Y+
    0283 91F9      LD	R31,Y+
    0284 91E9      LD	R30,Y+
    0285 91B9      LD	R27,Y+
    0286 91A9      LD	R26,Y+
    0287 9624      ADIW	R28,4
    0288 9508      RET

⌨️ 快捷键说明

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