📄 main.s
字号:
.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 + -