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

📄 doorc.lst

📁 该程序是医院用的CPCR记录仪的终端控制程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
    124E 3180      CPI	R24,0x10
    124F E2E7      LDI	R30,0x27
    1250 079E      CPC	R25,R30
    1251 F3C0      BCS	0x124A
(0586) 	  		status3=keyvalue();
    1252 940E46A9  CALL	_keyvalue
    1254 2F40      MOV	R20,R16
(0587) 			if(status3==0x0a);
    1255 300A      CPI	R16,0xA
    1256 F439      BNE	0x125E
    1257 C00A      RJMP	0x1262
(0588) 			else
(0589)   			{
(0590) 				while(1)
(0591) 				{
(0592) 				  	ttt3=keyvalue();
    1258 940E46A9  CALL	_keyvalue
    125A 2F60      MOV	R22,R16
(0593) 					if(status3!=ttt3)break;
    125B 1740      CP	R20,R16
    125C F009      BEQ	0x125E
    125D C001      RJMP	0x125F
    125E CFF9      RJMP	0x1258
(0594) 				}	
(0595) 				return status3;
    125F 2F04      MOV	R16,R20
    1260 C001      RJMP	0x1262
(0596) 			}
(0597) 	}
(0598) 	else
(0599) 		return 40;
    1261 E208      LDI	R16,0x28
    1262 940E485A  CALL	pop_gset3
    1264 9508      RET
_read0key:
  status4              --> R20
  status3              --> R20
  ttt3                 --> R22
  i                    --> R22
    1265 940E4869  CALL	push_gset2
(0600) }
(0601) unsigned char read0key(void)
(0602) {
(0603)  	 unsigned char status4,ttt3,status3;
(0604) 	 unsigned int i;
(0605) 	 status4=scankey();
    1267 940E4605  CALL	_scankey
    1269 2F40      MOV	R20,R16
(0606) 	 if(status4==0)
    126A 2300      TST	R16
    126B F529      BNE	0x1291
(0607) 	 {
(0608) 		 for(i=0;i<10000;i++);
    126C 2766      CLR	R22
    126D 2777      CLR	R23
    126E C002      RJMP	0x1271
    126F 5F6F      SUBI	R22,0xFF
    1270 4F7F      SBCI	R23,0xFF
    1271 3160      CPI	R22,0x10
    1272 E2E7      LDI	R30,0x27
    1273 077E      CPC	R23,R30
    1274 F3D0      BCS	0x126F
(0609) 	  	 status3=keyvalue();
    1275 940E46A9  CALL	_keyvalue
    1277 2F40      MOV	R20,R16
(0610) 		 if(status3==0)
    1278 2300      TST	R16
    1279 F4C1      BNE	0x1292
(0611)   		 {
(0612) 			if(timenum>13)timenum=0;
    127A E08D      LDI	R24,0xD
    127B 90200110  LDS	R2,timenum
    127D 1582      CP	R24,R2
    127E F418      BCC	0x1282
    127F 2422      CLR	R2
    1280 92200110  STS	timenum,R2
(0613) 			timenum++;
    1282 91800110  LDS	R24,timenum
    1284 5F8F      SUBI	R24,0xFF
    1285 93800110  STS	timenum,R24
    1287 C006      RJMP	0x128E
(0614) 			while(1)
(0615) 			{
(0616) 			  	ttt3=keyvalue();
    1288 940E46A9  CALL	_keyvalue
    128A 2F60      MOV	R22,R16
(0617) 				if(status3!=ttt3)break;
    128B 1740      CP	R20,R16
    128C F009      BEQ	0x128E
    128D C001      RJMP	0x128F
    128E CFF9      RJMP	0x1288
(0618) 			}	
(0619) 			return 0;
    128F 2700      CLR	R16
    1290 C001      RJMP	0x1292
(0620) 		}
(0621) 	}
(0622) 	else
(0623) 		return 99;	 
    1291 E603      LDI	R16,0x63
    1292 940E4857  CALL	pop_gset2
    1294 9508      RET
_write_time:
  i                    --> R20
  time                 --> R22
  addr                 --> R10
    1295 940E4867  CALL	push_gset3
    1297 01B9      MOVW	R22,R18
    1298 2EA0      MOV	R10,R16
(0624) }
(0625) void write_time(unsigned char addr,unsigned char *time)
(0626) {
(0627)  	 unsigned char i;
(0628) 	 for(i=0;i<7;i++)
    1299 2744      CLR	R20
    129A C00F      RJMP	0x12AA
(0629) 	 EEPROMwrite(addr*16+i,time[i]);
    129B 2FE4      MOV	R30,R20
    129C 27FF      CLR	R31
    129D 0FE6      ADD	R30,R22
    129E 1FF7      ADC	R31,R23
    129F 8120      LDD	R18,Z+0
    12A0 E180      LDI	R24,0x10
    12A1 9D8A      MUL	R24,R10
    12A2 0180      MOVW	R16,R0
    12A3 2E24      MOV	R2,R20
    12A4 2433      CLR	R3
    12A5 0D02      ADD	R16,R2
    12A6 1D13      ADC	R17,R3
    12A7 940E48B2  CALL	_EEPROMwrite
    12A9 9543      INC	R20
    12AA 3047      CPI	R20,7
    12AB F378      BCS	0x129B
    12AC 940E485A  CALL	pop_gset3
    12AE 9508      RET
_main:
  now_time             --> Y+1
  status2              --> Y+1
  yyj                  --> Y+4
  modecounter          --> Y+3
  status4              --> Y+2
  status3              --> R12
  ttt3                 --> R14
  i                    --> R20
    12AF 9725      SBIW	R28,5
(0630) }
(0631) void main(void)
(0632) {
(0633)  	unsigned char status2,status3,status4,ttt3;
(0634) 	unsigned int i,now_time;
(0635) 	unsigned char modecounter=0;
    12B0 2400      CLR	R0
    12B1 820B      STD	Y+3,R0
(0636) 	unsigned char yyj;
(0637) 
(0638) 	CLI();
    12B2 94F8      BCLR	7
(0639) //	WDTCR=0x18;
(0640) //	WDTCR=0x10;
(0641) 
(0642) 	MCUCR = 0x30;                              //进入掉电休眠模式       SE=1,SM0,SM1,SM2 :0,1,0
    12B3 E380      LDI	R24,0x30
    12B4 BF85      OUT	0x35,R24
(0643)     EICRA = 0x03;                               //外部中断0的中断模式,上升沿触发中断
    12B5 E083      LDI	R24,3
    12B6 9380006A  STS	0x6A,R24
(0644)  	EICRB = 0x80;                               //外部中断7的中断模式,下降沿触发中断
    12B8 E880      LDI	R24,0x80
    12B9 BF8A      OUT	0x3A,R24
(0645)  	EIMSK = 0x81;                              //外部中断0和外部中断7的中断任务.
    12BA E881      LDI	R24,0x81
    12BB BF89      OUT	0x39,R24
(0646)  	TIMSK = 0x04;                                //timer interrupt sources
    12BC E084      LDI	R24,4
    12BD BF87      OUT	0x37,R24
(0647)  	ETIMSK = 0x00;                             //extended timer interrupt sources
    12BE 2422      CLR	R2
    12BF 9220007D  STS	0x7D,R2
(0648) 	PORTF=0x00;
    12C1 92200062  STS	0x62,R2
(0649) 	DDRF=0xFF;
    12C3 EF8F      LDI	R24,0xFF
    12C4 93800061  STS	0x61,R24
(0650) 	SEI();
    12C6 9478      BSET	7
(0651) 	timer0_init();
    12C7 DB2C      RCALL	_timer0_init
(0652) 	timer1_init();
    12C8 DB21      RCALL	_timer1_init
(0653) 	uart0_init();	  
    12C9 DA46      RCALL	_uart0_init
(0654) 	  displaycount=0;
    12CA 2422      CLR	R2
    12CB 922001FD  STS	displaycount,R2
(0655) 	  CLEAR_LIGHT();
    12CD 9ABE      SBI	0x17,6
(0656) 	  init_par();          //init ds1302
    12CE DAD0      RCALL	_init_par
(0657) //	  init_val();          //init var
(0658) 	  lcd_init();          //lcd init
    12CF 940E1C8C  CALL	_lcd_init
(0659) 	  clear_lcd();
    12D1 940E1CC3  CALL	_clear_lcd
(0660) 	  display_1();
    12D3 940E1DBF  CALL	_display_1
(0661) 	  CLEAR_BELL();
    12D5 9ABD      SBI	0x17,5
(0662) 	  SET_LED0();
    12D6 988F      CBI	0x11,7
(0663) 	  beep(5);
    12D7 E005      LDI	R16,5
    12D8 DB49      RCALL	_beep
(0664) 	 delay(100);
    12D9 E604      LDI	R16,0x64
    12DA DED6      RCALL	_delay
(0665) 	 beep(5);
    12DB E005      LDI	R16,5
    12DC DB45      RCALL	_beep
    12DD C721      RJMP	0x19FF
(0666) 	 
(0667) 
(0668) 	while(1)
(0669) 	{
(0670) 
(0671) 			lcd_init();
    12DE 940E1C8C  CALL	_lcd_init
(0672) 			if(sio_flag==1)COMM_RX();
    12E0 918001A3  LDS	R24,sio_flag
    12E2 3081      CPI	R24,1
    12E3 F409      BNE	0x12E5
    12E4 DB4B      RCALL	_COMM_RX
(0673) 	  		Get_1302(time_data);
    12E5 E00C      LDI	R16,0xC
    12E6 E012      LDI	R17,2
    12E7 940E1AC9  CALL	_Get_1302
(0674) 			if(modemstatus==0)          //显示正常的日期时间
    12E9 90200102  LDS	R2,modemstatus
    12EB 2022      TST	R2
    12EC F429      BNE	0x12F2
(0675) 			{
(0676) 			 	display_time1(time_data);
    12ED E00C      LDI	R16,0xC
    12EE E012      LDI	R17,2
    12EF 940E240E  CALL	_display_time1
(0677) 			}
    12F1 C6E0      RJMP	0x19D2
(0678) 			else if(modemstatus==2)          //事件录入状态
    12F2 91800102  LDS	R24,modemstatus
    12F4 3082      CPI	R24,2
    12F5 F009      BEQ	0x12F7
    12F6 C158      RJMP	0x144F
(0679) 			{
(0680) 			 	 if(readxinghaokey()==0)
    12F7 DF25      RCALL	_readxinghaokey
    12F8 2300      TST	R16
    12F9 F4F1      BNE	0x1318
(0681) 			 	 {
(0682) 			  		if(lockkey_flag==1)lockkey_flag=0;
    12FA 91800103  LDS	R24,lockkey_flag
    12FC 3081      CPI	R24,1
    12FD F421      BNE	0x1302
    12FE 2422      CLR	R2
    12FF 92200103  STS	lockkey_flag,R2
    1301 C016      RJMP	0x1318
(0683) 					else if(lockkey_flag==0)
    1302 90200103  LDS	R2,lockkey_flag
    1304 2022      TST	R2
    1305 F491      BNE	0x1318
(0684) 					{
(0685) 						lockkey_flag=1;
    1306 E081      LDI	R24,1
    1307 93800103  STS	lockkey_flag,R24
(0686) 						for(i=0;i<16;i++)
    1309 2744      CLR	R20
    130A 2755      CLR	R21
    130B C008      RJMP	0x1314
(0687) 						{
(0688) 						 	EEPROMwrite(0x200+i,1);
    130C E021      LDI	R18,1
    130D 018A      MOVW	R16,R20
    130E 5000      SUBI	R16,0
    130F 4F1E      SBCI	R17,0xFE
    1310 940E48B2  CALL	_EEPROMwrite
    1312 5F4F      SUBI	R20,0xFF
    1313 4F5F      SBCI	R21,0xFF
    1314 3140      CPI	R20,0x10
    1315 E0E0      LDI	R30,0
    1316 075E      CPC	R21,R30
    1317 F3A0      BCS	0x130C
(0689) 						}
(0690) 					}
(0691) 			 	 }
(0692) 				 if(lockkey_flag==1)
    1318 91800103  LDS	R24,lockkey_flag
    131A 3081      CPI	R24,1
    131B F009      BEQ	0x131D
    131C C12F      RJMP	0x144C
(0693) 				 {				 
(0694) 				 	yyj=readnumberkey();
    131D DF22      RCALL	_readnumberkey
    131E 830C      STD	Y+4,R16
(0695) 					switch(yyj)
    131F 2EA0      MOV	R10,R16
    1320 24BB      CLR	R11
    1321 20AA      TST	R10
    1322 F419      BNE	0x1326
    1323 20BB      TST	R11
    1324 F409      BNE	0x1326
    1325 C0F8      RJMP	0x141E
    1326 01C5      MOVW	R24,R10
    1327 3081      CPI	R24,1
    1328 E0E0      LDI	R30,0
    1329 079E      CPC	R25,R30
    132A F409      BNE	0x132C
    132B C02E      RJMP	0x135A
    132C 3082      CPI	R24,2
    132D E0E0      LDI	R30,0
    132E 079E      CPC	R25,R30
    132F F409      BNE	0x1331
    1330 C03F      RJMP	0x1370
    1331 3083      CPI	R24,3
    1332 E0E0      LDI	R30,0
    1333 079E      CPC	R25,R30
    1334 F409      BNE	0x1336
    1335 C050      RJMP	0x1386
    1336 3084      CPI	R24,4
    1337 E0E0      LDI	R30,0
    1338 079E      CPC	R25,R30
    1339 F409      BNE	0x133B
    133A C060      RJMP	0x139B
    133B 3085      CPI	R24,5
    133C E0E0      LDI	R30,0
    133D 079E      CPC	R25,R30
    133E F409      BNE	0x1340
    133F C071      RJMP	0x13B1
    1340 3086      CPI	R24,6
    1341 E0E0      LDI	R30,0
    1342 079E      CPC	R25,R30
    1343 F409      BNE	0x1345
    1344 C082      RJMP	0x13C7
    1345 3087      CPI	R24,7
    1346 E0E0      LDI	R30,0
    1347 079E      CPC	R25,R30
    1348 F409      BNE	0x134A
    1349 C092      RJMP	0x13DC
    134A 3088      CPI	R24,0x8
    134B E0E0      LDI	R30,0
    134C 079E      CPC	R25,R30
    134D F409      BNE	0x134F
    134E C0A3      RJMP	0x13F2
    134F 3089      CPI	R24,0x9
    1350 E0E0      LDI	R30,0
    1351 079E      CPC	R25,R30
    1352 F409      BNE	0x1354
    1353 C0B4      RJMP	0x1408
    1354 308B      CPI	R24,0xB
    1355 E0E0      LDI	R30,0
    1356 079E      CPC	R25,R30
    1357 F409      BNE	0x1359
    1358 C0DB      RJMP	0x1434
    1359 C0EF      RJMP	0x1449
(0696) 					{
(0697) 				 	 	case 1:
(0698) 						keynum=0;
    135A 2422      CLR	R2
    135B 92200104  STS	keynum,R2
(0699) 						if(key1mode>2)key1mode=0;
    135D E082      LDI	R24,2
    135E 90200105  LDS	R2,key1mode
    1360 1582      CP	R24,R2
    1361 F418      BCC	0x1365
    1362 2422      CLR	R2
    1363 92200105  STS	key1mode,R2
(0700) 						key1mode++;
    1365 91800105  LDS	R24,key1mode
    1367 5F8F      SUBI	R24,0xFF
    1368 93800105  STS	key1mode,R24
(0701) 						EEPROMwrite(0x200,key1mode);
    136A 2F28      MOV	R18,R24
    136B E000      LDI	R16,0
    136C E012      LDI	R17,2
    136D 940E48B2  CALL	_EEPROMwrite
(0702) 						break;
    136F C0D9      RJMP	0x1449
(0703) 					
(0704) 						case 2:
(0705) 						keynum=1;
    1370 E081      LDI	R24,1
    1371 93800104  STS	keynum,R24
(0706) 						if(key2mode>2)key2mode=0;
    1373 E082      LDI	R24,2
    1374 90200106  LDS	R2,key2mode
    1376 1582      CP	R24,R2
    1377 F418      BCC	0x137B
    1378 2422      CLR	R2
    1379 92200106  STS	key2mode,R2
(0707) 						key2mode++;
    137B 91800106  LDS	R24,key2mode
    137D 5F8F      SUBI	R24,0xFF
    137E 93800106  STS	key2mode,R24
(0708) 						EEPROMwrite(0x200+1,key2mode);
    1380 2F28      MOV	R18,R24
    1381 E001      LDI	R16,1
    1382 E012      LDI	R17,2
    1383 940E48B2  CALL	_EEPROMwrite
(0709) 						break;
    1385 C0C3      RJMP	0x1449
(0710) 					
(0711) 						case 3:
(0712) 						keynum=2;
    1386 E082      LDI	R24,2
    1387 93800104  STS	keynum,R24
(0713) 						if(key3mode>2)key3mode=0;
    1389 90200107  LDS	R2,key3mode
    138B 1582      CP	R24,R2
    138C F418      BCC	0x1390
    138D 2422      CLR	R2
    138E 92200107  STS	key3mode,R2
(0714) 						key3mode++;
    1390 91800107  LDS	R24,key3mode
    1392 5F8F      SUBI	R24,0xFF
    1393 93800107  STS	key3mode,R24
(0715) 						EEPROMwrite(0x

⌨️ 快捷键说明

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