📄 doorc.lst
字号:
__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 + -