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

📄 main.s

📁 该程序是医院用的CPCR记录仪的终端控制程序
💻 S
📖 第 1 页 / 共 5 页
字号:
	.module main.c
	.area data(ram, con, rel)
_commtimer::
	.blkb 2
	.area idata
	.word 0
	.area data(ram, con, rel)
	.dbfile F:\yyjapp\yymk\software\main.c
	.dbsym e commtimer _commtimer i
_modemstatus::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile F:\yyjapp\yymk\software\main.c
	.dbsym e modemstatus _modemstatus c
_lockkey_flag::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile F:\yyjapp\yymk\software\main.c
	.dbsym e lockkey_flag _lockkey_flag c
_keynum::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile F:\yyjapp\yymk\software\main.c
	.dbsym e keynum _keynum c
_key1mode::
	.blkb 1
	.area idata
	.byte 1
	.area data(ram, con, rel)
	.dbfile F:\yyjapp\yymk\software\main.c
	.dbsym e key1mode _key1mode c
_key2mode::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile F:\yyjapp\yymk\software\main.c
	.dbsym e key2mode _key2mode c
_key3mode::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile F:\yyjapp\yymk\software\main.c
	.dbsym e key3mode _key3mode c
_key4mode::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile F:\yyjapp\yymk\software\main.c
	.dbsym e key4mode _key4mode c
_key5mode::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile F:\yyjapp\yymk\software\main.c
	.dbsym e key5mode _key5mode c
_key6mode::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile F:\yyjapp\yymk\software\main.c
	.dbsym e key6mode _key6mode c
_key7mode::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile F:\yyjapp\yymk\software\main.c
	.dbsym e key7mode _key7mode c
_key8mode::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile F:\yyjapp\yymk\software\main.c
	.dbsym e key8mode _key8mode c
_key9mode::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile F:\yyjapp\yymk\software\main.c
	.dbsym e key9mode _key9mode c
_keyamode::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile F:\yyjapp\yymk\software\main.c
	.dbsym e keyamode _keyamode c
_keybmode::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile F:\yyjapp\yymk\software\main.c
	.dbsym e keybmode _keybmode c
_timenum::
	.blkb 1
	.area idata
	.byte 1
	.area data(ram, con, rel)
	.dbfile F:\yyjapp\yymk\software\main.c
	.dbsym e timenum _timenum c
_checktime::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile F:\yyjapp\yymk\software\main.c
	.dbsym e checktime _checktime c
_alarm_flag::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile F:\yyjapp\yymk\software\main.c
	.dbsym e alarm_flag _alarm_flag c
_zone_flag::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile F:\yyjapp\yymk\software\main.c
	.dbsym e zone_flag _zone_flag c
_zone_flag_1::
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile F:\yyjapp\yymk\software\main.c
	.dbsym e zone_flag_1 _zone_flag_1 c
_optionmode::
	.blkb 1
	.area idata
	.byte 1
	.area data(ram, con, rel)
	.dbfile F:\yyjapp\yymk\software\main.c
	.dbsym e optionmode _optionmode c
_esckey::
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.dbfile F:\yyjapp\yymk\software\main.c
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.dbfile F:\yyjapp\yymk\software\main.c
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.dbfile F:\yyjapp\yymk\software\main.c
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.dbfile F:\yyjapp\yymk\software\main.c
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.dbfile F:\yyjapp\yymk\software\main.c
	.blkb 2
	.area idata
	.byte 0,0
	.area data(ram, con, rel)
	.dbfile F:\yyjapp\yymk\software\main.c
	.blkb 1
	.area idata
	.byte 0
	.area data(ram, con, rel)
	.dbfile F:\yyjapp\yymk\software\main.c
	.dbsym e esckey _esckey A[13:13]c
_POS_number::
	.blkb 1
	.area idata
	.byte 3
	.area data(ram, con, rel)
	.dbfile F:\yyjapp\yymk\software\main.c
	.dbsym e POS_number _POS_number c
	.area text(rom, con, rel)
	.dbfile F:\yyjapp\yymk\software\main.c
	.dbfunc e uart0_init _uart0_init fV
	.even
_uart0_init::
	.dbline -1
	.dbline 100
; #include <iom128v.h>
; #include <macros.h>
; #include <stdio.h>
; #include <eeprom.h>
; #include "main.h"
; #include "ds1302.h"
; #include "lcd1.h"
; //#include "MfRc500.h"
; #include "at45db161.h"
; #include "keyboard.h"
; //#include "24c01.h"
; 
; unsigned int commtimer=0;
; unsigned char modemstatus=0;         /*记录仪工作模式状态:0:事件录入状态   默认为0
; 		 	  					                         1:手术过程记录状态
; 								                         2: 记录查询状态*/
; unsigned char lockkey_flag=0;        //for lockkey_flag=1  lock key 
; unsigned char keynum=0;
; unsigned char key1mode=1;		
; unsigned char key2mode=0;
; unsigned char key3mode=0;
; unsigned char key4mode=0;
; unsigned char key5mode=0;
; unsigned char key6mode=0;
; unsigned char key7mode=0;
; unsigned char key8mode=0;
; unsigned char key9mode=0;
; unsigned char keyamode=0;
; unsigned char keybmode=0;
; 
; unsigned char even_data[11];
; 
; unsigned char timenum=1;
; 
; unsigned char record_even[9];
; 												 
; unsigned int alarm_time;           //报警时间
; 
; unsigned char enopendoor_flag;     //为1正常卡能开门,为0不能开门。
; unsigned char checktime=0;
; 
; //unsigned char its_address;
; unsigned int recordnumber;
; unsigned char alarm_flag=0;
; unsigned char zone_flag=0;         // for 1 is alarm, for 0 is no alarm 
; unsigned char zone_flag_1=0;       // for 1 is alarm, for 0 is no alarm
; unsigned char optionmode=1;
; unsigned char cardcounter;
; unsigned char code_type;
; unsigned char second_flag;
; unsigned char ledcount;
; unsigned char idil_time;
; unsigned char mode;
; unsigned char time_data[7];
; unsigned char dis_time[7];
; unsigned char RxHead1;
; unsigned char sio1_flag;
; unsigned char head1;
; unsigned char RxHead0;
; unsigned char sio0_flag;
; unsigned char head0;
; unsigned char flash_ledflag;
; unsigned char displaycount;
; 
; unsigned char t1[7];
; unsigned char t2[7];
; unsigned char t3[7];
; unsigned char t4[7];
; unsigned char t5[7];
; unsigned char t6[7];
; unsigned char t7[7];
; unsigned char t8[7];
; unsigned char t9[7];
; unsigned char t10[7];
; unsigned char t11[7];
; unsigned char t12[7];
; 
; unsigned char esckey[]={0,0,0,0,0,0,0,0,0,0,0,0,0};
; unsigned char passflag;
; unsigned char password1;
; unsigned int timecounter;
; unsigned char POS_number=0x03;
; unsigned char botelv_flag;
; 
; unsigned char RxHead0;
; unsigned char sio_flag;
; unsigned char head;
; unsigned char TX_BUF0[98];                                     //发送缓冲区数组
; unsigned char RX_BUF0[12];                                     //接受缓冲区数组
; 
; unsigned char fc;
; unsigned char beep_flag;
; unsigned char beep_second;
; unsigned int timer;
; extern unsigned int cradserno;
; unsigned char record_flag;             //记录滚动改写启动标志
; unsigned int rr_n;  
; 
; void uart0_init(void)
; {
	.dbline 101
; 	 UCSR0B = 0x00; //disable while setting baud rate
	clr R2
	out 0xa,R2
	.dbline 102
;  	 UCSR0A = 0x00;
	out 0xb,R2
	.dbline 103
;  	 UCSR0C = 0x06;
	ldi R24,6
	sts 149,R24
	.dbline 104
;  	 UBRR0L = 0x47; //set baud rate lo    9600
	ldi R24,71
	out 0x9,R24
	.dbline 105
;  	 UBRR0H = 0x00; //set baud rate hi
	sts 144,R2
	.dbline 106
;  	 UCSR0B = 0x98;
	ldi R24,152
	out 0xa,R24
	.dbline -2
L1:
	.dbline 0 ; func end
	ret
	.dbend
	.area vector(rom, abs)
	.org 72
	jmp _uart0_rx_isr
	.area text(rom, con, rel)
	.dbfile F:\yyjapp\yymk\software\main.c
	.dbfunc e uart0_rx_isr _uart0_rx_isr fV
;            lll -> <dead>
;              k -> <dead>
;             aa -> <dead>
;              s -> R16
	.even
_uart0_rx_isr::
	st -y,R2
	st -y,R3
	st -y,R16
	st -y,R24
	st -y,R25
	st -y,R30
	st -y,R31
	in R2,0x3f
	st -y,R2
	.dbline -1
	.dbline 111
; }
; 
; #pragma interrupt_handler uart0_rx_isr:19
; void uart0_rx_isr(void)
; {
	.dbline 116
;  	 unsigned char s;
; 	 unsigned char aa;
; 	 unsigned int k;
; 	 unsigned char lll;
; 	 CLI();
	cli
	.dbline 117
;      s = UDR0;
	in R16,0xc
	.dbline 118
; 	 if((RxHead0==0)&&(s!=2))
	lds R2,_RxHead0
	tst R2
	brne L3
	cpi R16,2
	breq L3
	.dbline 119
; 	 {
	.dbline 120
; 	  		sio_flag=0;
	clr R2
	sts _sio_flag,R2
	.dbline 121
; 			RxHead0=0;
	sts _RxHead0,R2
	.dbline 122
; 			commtimer=0;
	clr R3
	sts _commtimer+1,R3
	sts _commtimer,R2
	.dbline 123
; 			SEI();
	sei
	.dbline 124
; 			return;
	xjmp L2
L3:
	.dbline 126
; 	 } 
;      RX_BUF0[RxHead0++] = s;          /* store received data in buffer */
	lds R2,_RxHead0
	clr R3
	mov R24,R2
	subi R24,255    ; addi 1
	sts _RxHead0,R24
	ldi R24,<_RX_BUF0
	ldi R25,>_RX_BUF0
	mov R30,R2
	clr R31
	add R30,R24
	adc R31,R25
	std z+0,R16
	.dbline 127
; 	 if(RxHead0==3)
	lds R24,_RxHead0
	cpi R24,3
	brne L5
	.dbline 128
; 	 {
	.dbline 129
; 	  	if(s==0x03)
	cpi R16,3
	brne L7
	.dbline 130
; 	 	{
	.dbline 131
; 		 	sio_flag = 1;
	ldi R24,1
	sts _sio_flag,R24
	.dbline 132
;         	RxHead0=0;
	clr R2
	sts _RxHead0,R2
	.dbline 133
; 			SEI();
	sei
	.dbline 134
; 			return;
	xjmp L2
L7:
	.dbline 137
; 	 	}
; 		else
; 		{
	.dbline 138
; 		 	sio_flag=0;
	clr R2
	sts _sio_flag,R2
	.dbline 139
; 			RxHead0=0;
	sts _RxHead0,R2
	.dbline 140
; 			SEI();
	sei
	.dbline 141
; 			return;
	xjmp L2
L5:
	.dbline 144
; 		}
; 	 }
;   SEI();
	sei
	.dbline -2
L2:
	ld R2,y+
	out 0x3f,R2
	ld R31,y+
	ld R30,y+
	ld R25,y+
	ld R24,y+
	ld R16,y+
	ld R3,y+
	ld R2,y+
	.dbline 0 ; func end
	reti
	.dbsym l lll 1 c
	.dbsym l k 1 i
	.dbsym l aa 1 c
	.dbsym r s 16 c
	.dbend
	.dbfunc e TransmitByte0 _TransmitByte0 fV
;             ct -> R20
;            len -> R18
;           data -> R16,R17
	.even
_TransmitByte0::
	xcall push_gset1
	.dbline -1
	.dbline 148
; 	  
; }
; void TransmitByte0( unsigned char *data,unsigned char len )
; {
L10:
	.dbline 150
L11:
	.dbline 150
; 	 unsigned char ct;
;      while (!(UCSR0A & (1<<UDRE0)));
	sbis 0xb,5
	rjmp L10
	.dbline 151
; 	 UDR0=0xfe;
	ldi R24,254
	out 0xc,R24
	.dbline 152
;       for (ct=0;ct<len;ct++)
	clr R20
	xjmp L16
X0:
	.dbline 153
;      {
L17:
	.dbline 154
L18:
	.dbline 154
	sbis 0xb,5
	rjmp L17
	.dbline 155
	movw R30,R16
	ld R2,Z+
	movw R16,R30
	out 0xc,R2
	.dbline 156
L14:
	.dbline 152
	inc R20
L16:
	.dbline 152
	cp R20,R18
	brlo L18
	.dbline -2
L9:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r ct 20 c
	.dbsym r len 18 c
	.dbsym r data 16 pc
	.dbend
	.dbfunc e TransmitByte1 _TransmitByte1 fV
;             ct -> R20
;            len -> R18
;           data -> R16,R17
	.even
_TransmitByte1::
	xcall push_gset1
	.dbline -1
	.dbline 159
;          while (!(UCSR0A & (1<<UDRE0)));
;      	 UDR0 = *data++;
;      }     	   
; }
; void TransmitByte1(unsigned char *data,unsigned char len )
; {
	.dbline 162
; 	unsigned char ct;
;  //    while (!(UCSR0A & (1<<UDRE0)));
;      for (ct=0;ct<len;ct++)
	clr R20
	xjmp L24
X1:
	.dbline 163
;      {
L25:
	.dbline 164
L26:
	.dbline 164
	sbis 0xb,5
	rjmp L25
	.dbline 165
	movw R30,R16
	ld R2,Z+
	movw R16,R30
	out 0xc,R2
	.dbline 166
L22:
	.dbline 162
	inc R20
L24:
	.dbline 162
	cp R20,R18
	brlo L26
	.dbline -2
L20:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r ct 20 c
	.dbsym r len 18 c
	.dbsym r data 16 pc
	.dbend
	.dbfunc e TransmitByte_1 _TransmitByte_1 fV
;             ct -> R20
;            len -> R18
;           data -> R16,R17
	.even
_TransmitByte_1::
	xcall push_gset1
	.dbline -1
	.dbline 169
;          while (!(UCSR0A & (1<<UDRE0)));
;      	 UDR0 = *data++;
;      }     	   
; }
; void TransmitByte_1(unsigned char *data,unsigned char len )
; {
	.dbline 172
; 	unsigned char ct;
;  //    while (!(UCSR0A & (1<<UDRE0)));
;      for (ct=0;ct<len;ct++)
	clr R20
	xjmp L32
X2:
	.dbline 173
;      {
L33:
	.dbline 174
L34:
	.dbline 174
	lds R2,155
	sbrs R2,5
	rjmp L33
	.dbline 175
	movw R30,R16
	ld R2,Z+
	movw R16,R30
	sts 156,R2
	.dbline 176
L30:
	.dbline 172
	inc R20
L32:
	.dbline 172
	cp R20,R18
	brlo L34
	.dbline -2
L28:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r ct 20 c
	.dbsym r len 18 c
	.dbsym r data 16 pc
	.dbend
	.dbfunc e init_par _init_par fV
;             tt -> R20
;             ll -> R20
;              i -> R20
	.even
_init_par::
	xcall push_gset1
	.dbline -1
	.dbline 179
;          while (!(UCSR1A & (1<<UDRE1)));
;      	 UDR1 = *data++;
;      }     	   
; }
; void init_par(void)
; {
	.dbline 181
;  	   unsigned char ll,i,tt;
;  	   CLEAR_CLK();
	sbi 0x2,4
	.dbline 182
; 	   CLEAR_RST();
	sbi 0x2,6
	.dbline 183
; 	   ll=EEPROMread(DS1302_FLAG);
	ldi R16,1
	ldi R17,0
	xcall _EEPROMread
	mov R20,R16
	.dbline 184
; 	   if(ll==0xFF)
	cpi R16,255
	brne L37
	.dbline 185
; 	   {
	.dbline 186
; 	   		time_data[0]=0x48;
	ldi R24,72
	sts _time_data,R24
	.dbline 187
; 	   		time_data[1]=0x34;
	ldi R24,52
	sts _time_data+1,R24
	.dbline 188
; 	   		time_data[2]=0x15;
	ldi R24,21
	sts _time_data+2,R24
	.dbline 189
; 	   		time_data[3]=0x02;
	ldi R24,2
	sts _time_data+3,R24
	.dbline 190
; 	   		time_data[4]=0x03;
	ldi R24,3
	sts _time_data+4,R24
	.dbline 191
; 	   		time_data[5]=0x07;
	ldi R24,7
	sts _time_data+5,R24
	.dbline 192
; 	   		time_data[6]=0x08;
	ldi R24,8
	sts _time_data+6,R24
	.dbline 193
; 	   		Set_1302(time_data);
	ldi R16,<_time_data
	ldi R17,>_time_data
	xcall _Set_1302
	.dbline 194
; 	   		EEPROMwrite(DS1302_FLAG,0x05);
	ldi R18,5
	ldi R16,1
	ldi R17,0
	xcall _EEPROMwrite
	.dbline 195
; 	   }
	xjmp L38
L37:
	.dbline 197
; 	   else
; 	   W_1302(0x80,0x00);
	clr R18
	ldi R16,128
	xcall _W_1302
L38:
	.dbline 198
; 	   Set_charge();
	xcall _Set_charge
	.dbline 199
; 	   tt=EEPROMread(EVEN_FLAG);
	ldi R16,3
	ldi R17,0
	xcall _EEPROMread
	mov R20,R16
	.dbline 200
; 	   if(tt==0xff)
	cpi R16,255
	brne L45
	.dbline 201
; 	   {
	.dbline 202
; 	   		for(i=0;i<16;i++)
	clr R20
	xjmp L50
L47:
	.dbline 203
	ldi R18,1
	mov R16,R20
	clr R17
	subi R16,0  ; offset = 512
	sbci R17,254
	xcall _EEPROMwrite
L48:
	.dbline 202
	inc R20
L50:
	.dbline 202
	cpi R20,16
	brlo L47
	.dbline 206
; 			EEPROMwrite(0x200+i,0x01);
; //			for(i=3;i<8;i++)
; //			EEPROMwrite(0x100+i,0x01);
; 			EEPROMwrite(EVEN_FLAG,0xaa);
	ldi R18,170
	ldi R16,3
	ldi R17,0
	xcall _EEPROMwrite
	.dbline 207
; 	   }
L45:
	.dbline 208
L46:
	.dbline -2
L36:
	xcall pop_gset1

⌨️ 快捷键说明

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