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

📄 doorc.lst

📁 该程序是医院用的CPCR记录仪的终端控制程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
(0437) void timer1_ovf_isr(void)
(0438) {
(0439)  	 //TIMER1 has overflowed
(0440)  	 TCNT1H = 0xFD;   //reload counter high value  50ms
    1113 EF8D      LDI	R24,0xFD
    1114 BD8D      OUT	0x2D,R24
(0441)  	 TCNT1L = 0xE5;   //reload counter low value    50ms
    1115 EE85      LDI	R24,0xE5
    1116 BD8C      OUT	0x2C,R24
(0442) 	 displaycount++;
    1117 918001FD  LDS	R24,displaycount
    1119 5F8F      SUBI	R24,0xFF
    111A 938001FD  STS	displaycount,R24
(0443) 	 timecounter++;
    111C 918001A5  LDS	R24,timecounter
    111E 919001A6  LDS	R25,timecounter+1
    1120 9601      ADIW	R24,1
    1121 939001A6  STS	timecounter+1,R25
    1123 938001A5  STS	timecounter,R24
(0444) 	 timer++;
    1125 9180012F  LDS	R24,timer
    1127 91900130  LDS	R25,timer+1
    1129 9601      ADIW	R24,1
    112A 93900130  STS	timer+1,R25
    112C 9380012F  STS	timer,R24
(0445) 	 if(displaycount>34)
    112E E282      LDI	R24,0x22
    112F 902001FD  LDS	R2,displaycount
    1131 1582      CP	R24,R2
    1132 F418      BCC	0x1136
(0446) 	 	{
(0447) 		displaycount=0;
    1133 2422      CLR	R2
    1134 922001FD  STS	displaycount,R2
(0448) //		WDR();
(0449) 		}
(0450) 
(0451) 		
(0452) 	 checktime++;                //报警检查时间
    1136 91800111  LDS	R24,checktime
    1138 5F8F      SUBI	R24,0xFF
    1139 93800111  STS	checktime,R24
(0453) 	 if(checktime>2)
    113B E082      LDI	R24,2
    113C 90200111  LDS	R2,checktime
    113E 1582      CP	R24,R2
    113F F570      BCC	0x116E
(0454) 	 {
(0455) 	  	checktime=0;
    1140 2422      CLR	R2
    1141 92200111  STS	checktime,R2
(0456) 		alarm_time++;
    1143 9180021C  LDS	R24,alarm_time
    1145 9190021D  LDS	R25,alarm_time+1
    1147 9601      ADIW	R24,1
    1148 9390021D  STS	alarm_time+1,R25
    114A 9380021C  STS	alarm_time,R24
(0457) 		if(alarm_time>300)
    114C E28C      LDI	R24,0x2C
    114D E091      LDI	R25,1
    114E 9020021C  LDS	R2,alarm_time
    1150 9030021D  LDS	R3,alarm_time+1
    1152 1582      CP	R24,R2
    1153 0593      CPC	R25,R3
    1154 F420      BCC	0x1159
(0458) 		{
(0459) 		 	alarm_flag=0;
    1155 2422      CLR	R2
    1156 92200112  STS	alarm_flag,R2
(0460) 			SET_SDA();              //高电平清除报警
    1158 9889      CBI	0x11,1
(0461) 		}
(0462) 		if(zone_flag==1)
    1159 91800113  LDS	R24,zone_flag
    115B 3081      CPI	R24,1
    115C F469      BNE	0x116A
(0463) 		{
(0464) 		 	if((PIND&0x01)==0x00)
    115D 9980      SBIC	0x10,0
    115E C00F      RJMP	0x116E
(0465) 			{
(0466) 			 	alarm_flag=1;
    115F E081      LDI	R24,1
    1160 93800112  STS	alarm_flag,R24
(0467) 				CLEAR_SDA();       //报警输出低电平有效。
    1162 9A89      SBI	0x11,1
(0468) 				alarm_time=0;
    1163 2422      CLR	R2
    1164 2433      CLR	R3
    1165 9230021D  STS	alarm_time+1,R3
    1167 9220021C  STS	alarm_time,R2
(0469) 			}
(0470) 			else
(0471) 			;
(0472) 		}
    1169 C004      RJMP	0x116E
(0473) 		else
(0474) 		{
(0475) 		 	alarm_flag=0;
    116A 2422      CLR	R2
    116B 92200112  STS	alarm_flag,R2
(0476) 			SET_SDA();
    116D 9889      CBI	0x11,1
(0477) 		}
(0478) 		
(0479) 	 }		
(0480) 	 if(timer>2)
    116E E082      LDI	R24,2
    116F E090      LDI	R25,0
    1170 9020012F  LDS	R2,timer
    1172 90300130  LDS	R3,timer+1
    1174 1582      CP	R24,R2
    1175 0593      CPC	R25,R3
    1176 F538      BCC	0x119E
(0481)  	 {
(0482) 	  	if(beep_second==0)
    1177 90200131  LDS	R2,beep_second
    1179 2022      TST	R2
    117A F449      BNE	0x1184
(0483) 	   	{
(0484) 	     	SET_BELL();
    117B 98BD      CBI	0x17,5
(0485) 			SET_LED0();
    117C 988F      CBI	0x11,7
(0486)          	timer=0;
    117D 2422      CLR	R2
    117E 2433      CLR	R3
    117F 92300130  STS	timer+1,R3
    1181 9220012F  STS	timer,R2
(0487) 		}
    1183 C01A      RJMP	0x119E
(0488) 		else
(0489) 		{
(0490) 		 	if(beep_flag==1)
    1184 91800132  LDS	R24,beep_flag
    1186 3081      CPI	R24,1
    1187 F431      BNE	0x118E
(0491) 		 	{
(0492) 		 	 	SET_BELL();
    1188 98BD      CBI	0x17,5
(0493) 				SET_LED0();
    1189 988F      CBI	0x11,7
(0494) 		 		beep_flag=0;
    118A 2422      CLR	R2
    118B 92200132  STS	beep_flag,R2
(0495) 		 	}
    118D C005      RJMP	0x1193
(0496) 		 	else
(0497) 		 	{
(0498)      	 	 	CLEAR_BELL();
    118E 9ABD      SBI	0x17,5
(0499) 				CLEAR_LED0();
    118F 9A8F      SBI	0x11,7
(0500) 		 		beep_flag=1;
    1190 E081      LDI	R24,1
    1191 93800132  STS	beep_flag,R24
(0501) 		 	}
(0502) 		  timer=0;
    1193 2422      CLR	R2
    1194 2433      CLR	R3
    1195 92300130  STS	timer+1,R3
    1197 9220012F  STS	timer,R2
(0503) 		  beep_second--;
    1199 91800131  LDS	R24,beep_second
    119B 5081      SUBI	R24,1
    119C 93800131  STS	beep_second,R24
(0504) 	 }
(0505)   } 
    119E 9029      LD	R2,Y+
    119F BE2F      OUT	0x3F,R2
    11A0 9199      LD	R25,Y+
    11A1 9189      LD	R24,Y+
    11A2 9039      LD	R3,Y+
    11A3 9029      LD	R2,Y+
    11A4 9518      RETI
(0506) }
(0507) void beep11(void)
(0508) {
(0509)  	 unsigned int i;
(0510) 	 CLEAR_BELL();
_beep11:
  i                    --> R16
    11A5 9ABD      SBI	0x17,5
(0511) 	 for(i=0;i<65000;i++);
    11A6 2700      CLR	R16
    11A7 2711      CLR	R17
    11A8 C002      RJMP	0x11AB
    11A9 5F0F      SUBI	R16,0xFF
    11AA 4F1F      SBCI	R17,0xFF
    11AB 3E08      CPI	R16,0xE8
    11AC EFED      LDI	R30,0xFD
    11AD 071E      CPC	R17,R30
    11AE F3D0      BCS	0x11A9
(0512) 	 SET_BELL();
    11AF 98BD      CBI	0x17,5
    11B0 9508      RET
_delay:
  j                    --> R20
  i                    --> R22
  count                --> R16
    11B1 940E4869  CALL	push_gset2
(0513) }
(0514) void delay(unsigned char count)
(0515) {
(0516)  	 unsigned int i;
(0517) 	 unsigned char j;
(0518) 	 for(j=0;j<count;j++)
    11B3 2744      CLR	R20
    11B4 C00A      RJMP	0x11BF
(0519) 	 {
(0520) 	  	for(i=0;i<65000;i++);
    11B5 2766      CLR	R22
    11B6 2777      CLR	R23
    11B7 C002      RJMP	0x11BA
    11B8 5F6F      SUBI	R22,0xFF
    11B9 4F7F      SBCI	R23,0xFF
    11BA 3E68      CPI	R22,0xE8
    11BB EFED      LDI	R30,0xFD
    11BC 077E      CPC	R23,R30
    11BD F3D0      BCS	0x11B8
    11BE 9543      INC	R20
    11BF 1740      CP	R20,R16
    11C0 F3A0      BCS	0x11B5
    11C1 940E4857  CALL	pop_gset2
    11C3 9508      RET
_value_time:
  timedata1            --> R20
  timedata             --> R22
  data                 --> R20
  minutes              --> R20
  hour                 --> R22
    11C4 940E4869  CALL	push_gset2
    11C6 2F42      MOV	R20,R18
    11C7 2F60      MOV	R22,R16
(0521) 	 }
(0522) }
(0523) 
(0524) unsigned int value_time(unsigned char hour,unsigned char minutes)
(0525) {
(0526)  	 unsigned int data;
(0527) 	 unsigned int timedata,timedata1;
(0528) 	 timedata=(hour/16)*10+hour%16;
    11C8 E120      LDI	R18,0x10
    11C9 E030      LDI	R19,0
    11CA 2F06      MOV	R16,R22
    11CB 2711      CLR	R17
    11CC 940E47F5  CALL	mod16s
    11CE 2F86      MOV	R24,R22
    11CF 9582      SWAP	R24
    11D0 708F      ANDI	R24,0xF
    11D1 E09A      LDI	R25,0xA
    11D2 9F98      MUL	R25,R24
    11D3 01B0      MOVW	R22,R0
    11D4 0F60      ADD	R22,R16
    11D5 1F71      ADC	R23,R17
(0529) 	 timedata1=(minutes/16)*10+minutes%16;
    11D6 E120      LDI	R18,0x10
    11D7 E030      LDI	R19,0
    11D8 2F04      MOV	R16,R20
    11D9 2711      CLR	R17
    11DA 940E47F5  CALL	mod16s
    11DC 2F84      MOV	R24,R20
    11DD 9582      SWAP	R24
    11DE 708F      ANDI	R24,0xF
    11DF E09A      LDI	R25,0xA
    11E0 9F98      MUL	R25,R24
    11E1 01A0      MOVW	R20,R0
    11E2 0F40      ADD	R20,R16
    11E3 1F51      ADC	R21,R17
(0530) 	 data=timedata*60+timedata1;
    11E4 E30C      LDI	R16,0x3C
    11E5 E010      LDI	R17,0
    11E6 019B      MOVW	R18,R22
    11E7 940E4847  CALL	empy16s
    11E9 0118      MOVW	R2,R16
    11EA 0E24      ADD	R2,R20
    11EB 1E35      ADC	R3,R21
    11EC 01A1      MOVW	R20,R2
(0531) 	 return data;
    11ED 0181      MOVW	R16,R2
    11EE 940E4857  CALL	pop_gset2
    11F0 9508      RET
(0532) }
(0533) 
(0534) void setup_time(void)
(0535) {
(0536)  	 display_setuptime();
_setup_time:
    11F1 940E1EA3  CALL	_display_setuptime
(0537) 	 delay(20);
    11F3 E104      LDI	R16,0x14
    11F4 DFBC      RCALL	_delay
(0538) 	 update_time();
    11F5 940E1EC6  CALL	_update_time
    11F7 C023      RJMP	0x121B
(0539) //	 timecounter=0;
(0540) 	 while(1)
(0541) 	 {
(0542) 	  	if(u_year()==1)return;
    11F8 940E1F37  CALL	_u_year
    11FA 3001      CPI	R16,1
    11FB F409      BNE	0x11FD
    11FC C01F      RJMP	0x121C
(0543) 	 	if(u_month()==1)return;
    11FD 940E1FA0  CALL	_u_month
    11FF 3001      CPI	R16,1
    1200 F409      BNE	0x1202
    1201 C01A      RJMP	0x121C
(0544) 	 	if(u_day()==1)return;
    1202 940E2031  CALL	_u_day
    1204 3001      CPI	R16,1
    1205 F409      BNE	0x1207
    1206 C015      RJMP	0x121C
(0545) 	 	if(u_week()==1)return;
    1207 940E20D7  CALL	_u_week
    1209 3001      CPI	R16,1
    120A F409      BNE	0x120C
    120B C010      RJMP	0x121C
(0546) 	 	if(u_hour()==1)return;
    120C 940E2126  CALL	_u_hour
    120E 3001      CPI	R16,1
    120F F409      BNE	0x1211
    1210 C00B      RJMP	0x121C
(0547) 	 	if(u_minute()==1)return;
    1211 940E21C7  CALL	_u_minute
    1213 3001      CPI	R16,1
    1214 F409      BNE	0x1216
    1215 C006      RJMP	0x121C
(0548) 	 	u_second();
    1216 940E2234  CALL	_u_second
(0549) 		delay(12);
    1218 E00C      LDI	R16,0xC
    1219 DF97      RCALL	_delay
(0550) 		return;
    121A C001      RJMP	0x121C
    121B CFDC      RJMP	0x11F8
    121C 9508      RET
_readxinghaokey:
  status4              --> R20
  status3              --> R22
  ttt3                 --> R10
  i                    --> R20
    121D 940E4867  CALL	push_gset3
(0551) 	 }
(0552) }
(0553) 
(0554) unsigned char readxinghaokey(void)
(0555) {
(0556)  	 unsigned char status4,ttt3,status3;
(0557) 	 unsigned int i;
(0558) 	 status4=scankey();
    121F 940E4605  CALL	_scankey
    1221 2F40      MOV	R20,R16
(0559) 	 if(status4==0)
    1222 2300      TST	R16
    1223 F4C9      BNE	0x123D
(0560) 	 {
(0561) 		 for(i=0;i<10000;i++);
    1224 2744      CLR	R20
    1225 2755      CLR	R21
    1226 C002      RJMP	0x1229
    1227 5F4F      SUBI	R20,0xFF
    1228 4F5F      SBCI	R21,0xFF
    1229 3140      CPI	R20,0x10
    122A E2E7      LDI	R30,0x27
    122B 075E      CPC	R21,R30
    122C F3D0      BCS	0x1227
(0562) 	  		status3=keyvalue();
    122D 940E46A9  CALL	_keyvalue
    122F 2F60      MOV	R22,R16
(0563) 			if(status3==0x0a)
    1230 300A      CPI	R16,0xA
    1231 F451      BNE	0x123C
(0564)   			{
    1232 C006      RJMP	0x1239
(0565) 				while(1)
(0566) 				{
(0567) 				  	ttt3=keyvalue();
    1233 940E46A9  CALL	_keyvalue
    1235 2EA0      MOV	R10,R16
(0568) 					if(status3!=ttt3)break;
    1236 1760      CP	R22,R16
    1237 F009      BEQ	0x1239
    1238 C001      RJMP	0x123A
    1239 CFF9      RJMP	0x1233
(0569) 				}	
(0570) 				return 0;
    123A 2700      CLR	R16
    123B C001      RJMP	0x123D
(0571) 			}
(0572) 			else
(0573) 			{
(0574) 			 	return 1;
    123C E001      LDI	R16,1
    123D 940E485A  CALL	pop_gset3
    123F 9508      RET
_readnumberkey:
  status4              --> R22
  status3              --> R20
  ttt3                 --> R22
  i                    --> R10
    1240 940E4867  CALL	push_gset3
(0575) 			}
(0576) 	}
(0577) }
(0578) unsigned char readnumberkey(void)
(0579) {
(0580)  	 unsigned char status4,ttt3,status3;
(0581) 	 unsigned int i;
(0582) 	 status4=scankey();
    1242 940E4605  CALL	_scankey
    1244 2F60      MOV	R22,R16
(0583) 	 if(status4==0)
    1245 2300      TST	R16
    1246 F4D1      BNE	0x1261
(0584) 	 {
(0585) 		 for(i=0;i<10000;i++);
    1247 24AA      CLR	R10
    1248 24BB      CLR	R11
    1249 C003      RJMP	0x124D
    124A 01C5      MOVW	R24,R10
    124B 9601      ADIW	R24,1
    124C 015C      MOVW	R10,R24
    124D 01C5      MOVW	R24,R10

⌨️ 快捷键说明

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