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

📄 doorc.lst

📁 该程序是医院用的CPCR记录仪的终端控制程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
__text_start:
__start:
    0CEF EFCF      LDI	R28,0xFF
    0CF0 E1D0      LDI	R29,0x10
    0CF1 BFCD      OUT	0x3D,R28
    0CF2 BFDE      OUT	0x3E,R29
    0CF3 50C0      SUBI	R28,0
    0CF4 40D2      SBCI	R29,2
    0CF5 EA0A      LDI	R16,0xAA
    0CF6 8308      STD	Y+0,R16
    0CF7 2400      CLR	R0
    0CF8 E2EC      LDI	R30,0x2C
    0CF9 E0F1      LDI	R31,1
    0CFA E012      LDI	R17,2
    0CFB 33EF      CPI	R30,0x3F
    0CFC 07F1      CPC	R31,R17
    0CFD F011      BEQ	0x0D00
    0CFE 9201      ST	R0,Z+
    0CFF CFFB      RJMP	0x0CFB
    0D00 8300      STD	Z+0,R16
    0D01 EBE2      LDI	R30,0xB2
    0D02 E1F9      LDI	R31,0x19
    0D03 E0A0      LDI	R26,0
    0D04 E0B1      LDI	R27,1
    0D05 E119      LDI	R17,0x19
    0D06 3DEE      CPI	R30,0xDE
    0D07 07F1      CPC	R31,R17
    0D08 F021      BEQ	0x0D0D
    0D09 95C8      LPM
    0D0A 9631      ADIW	R30,1
    0D0B 920D      ST	R0,X+
    0D0C CFF9      RJMP	0x0D06
    0D0D 940E12AF  CALL	_main
_exit:
    0D0F CFFF      RJMP	_exit
FILE: F:\yyjapp\yymk\software\main.c
(0001) #include <iom128v.h>
(0002) #include <macros.h>
(0003) #include <stdio.h>
(0004) #include <eeprom.h>
(0005) #include "main.h"
(0006) #include "ds1302.h"
(0007) #include "lcd1.h"
(0008) //#include "MfRc500.h"
(0009) #include "at45db161.h"
(0010) #include "keyboard.h"
(0011) //#include "24c01.h"
(0012) 
(0013) unsigned int commtimer=0;
(0014) unsigned char modemstatus=0;         /*记录仪工作模式状态:0:事件录入状态   默认为0
(0015) 		 	  					                         1:手术过程记录状态
(0016) 								                         2: 记录查询状态*/
(0017) unsigned char lockkey_flag=0;        //for lockkey_flag=1  lock key 
(0018) unsigned char keynum=0;
(0019) unsigned char key1mode=1;		
(0020) unsigned char key2mode=0;
(0021) unsigned char key3mode=0;
(0022) unsigned char key4mode=0;
(0023) unsigned char key5mode=0;
(0024) unsigned char key6mode=0;
(0025) unsigned char key7mode=0;
(0026) unsigned char key8mode=0;
(0027) unsigned char key9mode=0;
(0028) unsigned char keyamode=0;
(0029) unsigned char keybmode=0;
(0030) 
(0031) unsigned char even_data[11];
(0032) 
(0033) unsigned char timenum=1;
(0034) 
(0035) unsigned char record_even[9];
(0036) 												 
(0037) unsigned int alarm_time;           //报警时间
(0038) 
(0039) unsigned char enopendoor_flag;     //为1正常卡能开门,为0不能开门。
(0040) unsigned char checktime=0;
(0041) 
(0042) //unsigned char its_address;
(0043) unsigned int recordnumber;
(0044) unsigned char alarm_flag=0;
(0045) unsigned char zone_flag=0;         // for 1 is alarm, for 0 is no alarm 
(0046) unsigned char zone_flag_1=0;       // for 1 is alarm, for 0 is no alarm
(0047) unsigned char optionmode=1;
(0048) unsigned char cardcounter;
(0049) unsigned char code_type;
(0050) unsigned char second_flag;
(0051) unsigned char ledcount;
(0052) unsigned char idil_time;
(0053) unsigned char mode;
(0054) unsigned char time_data[7];
(0055) unsigned char dis_time[7];
(0056) unsigned char RxHead1;
(0057) unsigned char sio1_flag;
(0058) unsigned char head1;
(0059) unsigned char RxHead0;
(0060) unsigned char sio0_flag;
(0061) unsigned char head0;
(0062) unsigned char flash_ledflag;
(0063) unsigned char displaycount;
(0064) 
(0065) unsigned char t1[7];
(0066) unsigned char t2[7];
(0067) unsigned char t3[7];
(0068) unsigned char t4[7];
(0069) unsigned char t5[7];
(0070) unsigned char t6[7];
(0071) unsigned char t7[7];
(0072) unsigned char t8[7];
(0073) unsigned char t9[7];
(0074) unsigned char t10[7];
(0075) unsigned char t11[7];
(0076) unsigned char t12[7];
(0077) 
(0078) unsigned char esckey[]={0,0,0,0,0,0,0,0,0,0,0,0,0};
(0079) unsigned char passflag;
(0080) unsigned char password1;
(0081) unsigned int timecounter;
(0082) unsigned char POS_number=0x03;
(0083) unsigned char botelv_flag;
(0084) 
(0085) unsigned char RxHead0;
(0086) unsigned char sio_flag;
(0087) unsigned char head;
(0088) unsigned char TX_BUF0[98];                                     //发送缓冲区数组
(0089) unsigned char RX_BUF0[12];                                     //接受缓冲区数组
(0090) 
(0091) unsigned char fc;
(0092) unsigned char beep_flag;
(0093) unsigned char beep_second;
(0094) unsigned int timer;
(0095) extern unsigned int cradserno;
(0096) unsigned char record_flag;             //记录滚动改写启动标志
(0097) unsigned int rr_n;  
(0098) 
(0099) void uart0_init(void)
(0100) {
(0101) 	 UCSR0B = 0x00; //disable while setting baud rate
_uart0_init:
    0D10 2422      CLR	R2
    0D11 B82A      OUT	0x0A,R2
(0102)  	 UCSR0A = 0x00;
    0D12 B82B      OUT	0x0B,R2
(0103)  	 UCSR0C = 0x06;
    0D13 E086      LDI	R24,6
    0D14 93800095  STS	0x95,R24
(0104)  	 UBRR0L = 0x47; //set baud rate lo    9600
    0D16 E487      LDI	R24,0x47
    0D17 B989      OUT	0x09,R24
(0105)  	 UBRR0H = 0x00; //set baud rate hi
    0D18 92200090  STS	0x90,R2
(0106)  	 UCSR0B = 0x98;
    0D1A E988      LDI	R24,0x98
    0D1B B98A      OUT	0x0A,R24
    0D1C 9508      RET
_uart0_rx_isr:
  lll                  --> Y+1
  k                    --> Y+1
  aa                   --> Y+1
  s                    --> R16
    0D1D 922A      ST	R2,-Y
    0D1E 923A      ST	R3,-Y
    0D1F 930A      ST	R16,-Y
    0D20 938A      ST	R24,-Y
    0D21 939A      ST	R25,-Y
    0D22 93EA      ST	R30,-Y
    0D23 93FA      ST	R31,-Y
    0D24 B62F      IN	R2,0x3F
    0D25 922A      ST	R2,-Y
(0107) }
(0108) 
(0109) #pragma interrupt_handler uart0_rx_isr:19
(0110) void uart0_rx_isr(void)
(0111) {
(0112)  	 unsigned char s;
(0113) 	 unsigned char aa;
(0114) 	 unsigned int k;
(0115) 	 unsigned char lll;
(0116) 	 CLI();
    0D26 94F8      BCLR	7
(0117)      s = UDR0;
    0D27 B10C      IN	R16,0x0C
(0118) 	 if((RxHead0==0)&&(s!=2))
    0D28 90200201  LDS	R2,RxHead0
    0D2A 2022      TST	R2
    0D2B F471      BNE	0x0D3A
    0D2C 3002      CPI	R16,2
    0D2D F061      BEQ	0x0D3A
(0119) 	 {
(0120) 	  		sio_flag=0;
    0D2E 2422      CLR	R2
    0D2F 922001A3  STS	sio_flag,R2
(0121) 			RxHead0=0;
    0D31 92200201  STS	RxHead0,R2
(0122) 			commtimer=0;
    0D33 2433      CLR	R3
    0D34 92300101  STS	commtimer+1,R3
    0D36 92200100  STS	commtimer,R2
(0123) 			SEI();
    0D38 9478      BSET	7
(0124) 			return;
    0D39 C024      RJMP	0x0D5E
(0125) 	 } 
(0126)      RX_BUF0[RxHead0++] = s;          /* store received data in buffer */
    0D3A 90200201  LDS	R2,RxHead0
    0D3C 2433      CLR	R3
    0D3D 2D82      MOV	R24,R2
    0D3E 5F8F      SUBI	R24,0xFF
    0D3F 93800201  STS	RxHead0,R24
    0D41 E384      LDI	R24,0x34
    0D42 E091      LDI	R25,1
    0D43 2DE2      MOV	R30,R2
    0D44 27FF      CLR	R31
    0D45 0FE8      ADD	R30,R24
    0D46 1FF9      ADC	R31,R25
    0D47 8300      STD	Z+0,R16
(0127) 	 if(RxHead0==3)
    0D48 91800201  LDS	R24,RxHead0
    0D4A 3083      CPI	R24,3
    0D4B F489      BNE	0x0D5D
(0128) 	 {
(0129) 	  	if(s==0x03)
    0D4C 3003      CPI	R16,3
    0D4D F441      BNE	0x0D56
(0130) 	 	{
(0131) 		 	sio_flag = 1;
    0D4E E081      LDI	R24,1
    0D4F 938001A3  STS	sio_flag,R24
(0132)         	RxHead0=0;
    0D51 2422      CLR	R2
    0D52 92200201  STS	RxHead0,R2
(0133) 			SEI();
    0D54 9478      BSET	7
(0134) 			return;
    0D55 C008      RJMP	0x0D5E
(0135) 	 	}
(0136) 		else
(0137) 		{
(0138) 		 	sio_flag=0;
    0D56 2422      CLR	R2
    0D57 922001A3  STS	sio_flag,R2
(0139) 			RxHead0=0;
    0D59 92200201  STS	RxHead0,R2
(0140) 			SEI();
    0D5B 9478      BSET	7
(0141) 			return;
    0D5C C001      RJMP	0x0D5E
(0142) 		}
(0143) 	 }
(0144)   SEI();
    0D5D 9478      BSET	7
    0D5E 9029      LD	R2,Y+
    0D5F BE2F      OUT	0x3F,R2
    0D60 91F9      LD	R31,Y+
    0D61 91E9      LD	R30,Y+
    0D62 9199      LD	R25,Y+
    0D63 9189      LD	R24,Y+
    0D64 9109      LD	R16,Y+
    0D65 9039      LD	R3,Y+
    0D66 9029      LD	R2,Y+
    0D67 9518      RETI
_TransmitByte0:
  ct                   --> R20
  len                  --> R18
  data                 --> R16
    0D68 940E486B  CALL	push_gset1
(0145) 	  
(0146) }
(0147) void TransmitByte0( unsigned char *data,unsigned char len )
(0148) {
(0149) 	 unsigned char ct;
(0150)      while (!(UCSR0A & (1<<UDRE0)));
    0D6A 9B5D      SBIS	0x0B,5
    0D6B CFFE      RJMP	0x0D6A
(0151) 	 UDR0=0xfe;
    0D6C EF8E      LDI	R24,0xFE
    0D6D B98C      OUT	0x0C,R24
(0152)       for (ct=0;ct<len;ct++)
    0D6E 2744      CLR	R20
    0D6F C007      RJMP	0x0D77
(0153)      {
(0154)          while (!(UCSR0A & (1<<UDRE0)));
    0D70 9B5D      SBIS	0x0B,5
    0D71 CFFE      RJMP	0x0D70
(0155)      	 UDR0 = *data++;
    0D72 01F8      MOVW	R30,R16
    0D73 9021      LD	R2,Z+
    0D74 018F      MOVW	R16,R30
    0D75 B82C      OUT	0x0C,R2
    0D76 9543      INC	R20
    0D77 1742      CP	R20,R18
    0D78 F3B8      BCS	0x0D70
    0D79 940E486E  CALL	pop_gset1
    0D7B 9508      RET
_TransmitByte1:
  ct                   --> R20
  len                  --> R18
  data                 --> R16
    0D7C 940E486B  CALL	push_gset1
(0156)      }     	   
(0157) }
(0158) void TransmitByte1(unsigned char *data,unsigned char len )
(0159) {
(0160) 	unsigned char ct;
(0161)  //    while (!(UCSR0A & (1<<UDRE0)));
(0162)      for (ct=0;ct<len;ct++)
    0D7E 2744      CLR	R20
    0D7F C007      RJMP	0x0D87
(0163)      {
(0164)          while (!(UCSR0A & (1<<UDRE0)));
    0D80 9B5D      SBIS	0x0B,5
    0D81 CFFE      RJMP	0x0D80
(0165)      	 UDR0 = *data++;
    0D82 01F8      MOVW	R30,R16
    0D83 9021      LD	R2,Z+
    0D84 018F      MOVW	R16,R30
    0D85 B82C      OUT	0x0C,R2
    0D86 9543      INC	R20
    0D87 1742      CP	R20,R18
    0D88 F3B8      BCS	0x0D80
    0D89 940E486E  CALL	pop_gset1
    0D8B 9508      RET
_TransmitByte_1:
  ct                   --> R20
  len                  --> R18
  data                 --> R16
    0D8C 940E486B  CALL	push_gset1
(0166)      }     	   
(0167) }
(0168) void TransmitByte_1(unsigned char *data,unsigned char len )
(0169) {
(0170) 	unsigned char ct;
(0171)  //    while (!(UCSR0A & (1<<UDRE0)));
(0172)      for (ct=0;ct<len;ct++)
    0D8E 2744      CLR	R20
    0D8F C00A      RJMP	0x0D9A
(0173)      {
(0174)          while (!(UCSR1A & (1<<UDRE1)));
    0D90 9020009B  LDS	R2,0x9B
    0D92 FE25      SBRS	R2,5
    0D93 CFFC      RJMP	0x0D90
(0175)      	 UDR1 = *data++;
    0D94 01F8      MOVW	R30,R16
    0D95 9021      LD	R2,Z+
    0D96 018F      MOVW	R16,R30
    0D97 9220009C  STS	0x9C,R2
    0D99 9543      INC	R20
    0D9A 1742      CP	R20,R18
    0D9B F3A0      BCS	0x0D90
    0D9C 940E486E  CALL	pop_gset1
    0D9E 9508      RET
_init_par:
  tt                   --> R20
  ll                   --> R20
  i                    --> R20
    0D9F 940E486B  CALL	push_gset1
(0176)      }     	   
(0177) }
(0178) void init_par(void)
(0179) {
(0180)  	   unsigned char ll,i,tt;
(0181)  	   CLEAR_CLK();
    0DA1 9A14      SBI	0x02,4
(0182) 	   CLEAR_RST();
    0DA2 9A16      SBI	0x02,6
(0183) 	   ll=EEPROMread(DS1302_FLAG);
    0DA3 E001      LDI	R16,1
    0DA4 E010      LDI	R17,0
    0DA5 940E48AD  CALL	_EEPROMread
    0DA7 2F40      MOV	R20,R16
(0184) 	   if(ll==0xFF)
    0DA8 3F0F      CPI	R16,0xFF
    0DA9 F4F9      BNE	0x0DC9
(0185) 	   {
(0186) 	   		time_data[0]=0x48;
    0DAA E488      LDI	R24,0x48
    0DAB 9380020C  STS	time_data,R24
(0187) 	   		time_data[1]=0x34;
    0DAD E384      LDI	R24,0x34
    0DAE 9380020D  STS	time_data+1,R24
(0188) 	   		time_data[2]=0x15;
    0DB0 E185      LDI	R24,0x15
    0DB1 9380020E  STS	time_data+2,R24
(0189) 	   		time_data[3]=0x02;
    0DB3 E082      LDI	R24,2
    0DB4 9380020F  STS	time_data+3,R24
(0190) 	   		time_data[4]=0x03;
    0DB6 E083      LDI	R24,3
    0DB7 93800210  STS	0x210,R24
(0191) 	   		time_data[5]=0x07;
    0DB9 E087      LDI	R24,7
    0DBA 93800211  STS	0x211,R24
(0192) 	   		time_data[6]=0x08;
    0DBC E088      LDI	R24,0x8
    0DBD 93800212  STS	0x212,R24
(0193) 	   		Set_1302(time_data);
    0DBF E00C      LDI	R16,0xC
    0DC0 E012      LDI	R17,2
    0DC1 940E1AAF  CALL	_Set_1302
(0194) 	   		EEPROMwrite(DS1302_FLAG,0x05);
    0DC3 E025      LDI	R18,5
    0DC4 E001      LDI	R16,1
    0DC5 E010      LDI	R17,0
    0DC6 940E48B2  CALL	_EEPROMwrite
(0195) 	   }
    0DC8 C004      RJMP	0x0DCD
(0196) 	   else
(0197) 	   W_1302(0x80,0x00);
    0DC9 2722      CLR	R18
    0DCA E800      LDI	R16,0x80
    0DCB 940E1A2B  CALL	_W_1302
(0198) 	   Set_charge();
    0DCD 940E1ADB  CALL	_Set_charge
(0199) 	   tt=EEPROMread(EVEN_FLAG);
    0DCF E003      LDI	R16,3
    0DD0 E010      LDI	R17,0
    0DD1 940E48AD  CALL	_EEPROMread
    0DD3 2F40      MOV	R20,R16
(0200) 	   if(tt==0xff)
    0DD4 3F0F      CPI	R16,0xFF
    0DD5 F489      BNE	0x0DE7
(0201) 	   {
(0202) 	   		for(i=0;i<16;i++)
    0DD6 2744      CLR	R20
    0DD7 C008      RJMP	0x0DE0

⌨️ 快捷键说明

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