代码拉取完成,页面将自动刷新
.module lock_m6418d.c
.area text(rom, con, rel)
0000 .dbfile lock_m6418d.c
.area data(ram, con, rel)
0000 .dbfile lock_m6418d.c
0000 _lock_open:
0000 .blkb 2
.area idata
0000 0000 .byte 0,0
.area data(ram, con, rel)
0002 .dbfile lock_m6418d.c
0002 .blkb 2
.area idata
0002 0000 .byte 0,0
.area data(ram, con, rel)
0004 .dbfile lock_m6418d.c
0004 .blkb 2
.area idata
0004 0000 .byte 0,0
.area data(ram, con, rel)
0006 .dbfile lock_m6418d.c
0006 .blkb 2
.area idata
0006 0000 .byte 0,0
.area data(ram, con, rel)
0008 .dbfile lock_m6418d.c
0008 .blkb 2
.area idata
0008 0000 .byte 0,0
.area data(ram, con, rel)
000A .dbfile lock_m6418d.c
000A .blkb 2
.area idata
000A 0000 .byte 0,0
.area data(ram, con, rel)
000C .dbfile lock_m6418d.c
000C .blkb 2
.area idata
000C 0000 .byte 0,0
.area data(ram, con, rel)
000E .dbfile lock_m6418d.c
000E .blkb 2
.area idata
000E 0000 .byte 0,0
.area data(ram, con, rel)
0010 .dbfile lock_m6418d.c
0010 .blkb 2
.area idata
0010 0000 .byte 0,0
.area data(ram, con, rel)
0012 .dbfile lock_m6418d.c
0012 .blkb 1
.area idata
0012 00 .byte 0
.area data(ram, con, rel)
0013 .dbfile lock_m6418d.c
0013 .dbfile E:\工作文件\18门锁板红外检测\程序\lock_m6418d.c
0013 .dbsym s lock_open _lock_open A[19:19]c
0013 _lock_flag:
0013 .blkb 2
.area idata
0013 0000 .byte 0,0
.area data(ram, con, rel)
0015 .dbfile E:\工作文件\18门锁板红外检测\程序\lock_m6418d.c
0015 .blkb 2
.area idata
0015 0000 .byte 0,0
.area data(ram, con, rel)
0017 .dbfile E:\工作文件\18门锁板红外检测\程序\lock_m6418d.c
0017 .blkb 2
.area idata
0017 0000 .byte 0,0
.area data(ram, con, rel)
0019 .dbfile E:\工作文件\18门锁板红外检测\程序\lock_m6418d.c
0019 .blkb 2
.area idata
0019 0000 .byte 0,0
.area data(ram, con, rel)
001B .dbfile E:\工作文件\18门锁板红外检测\程序\lock_m6418d.c
001B .blkb 2
.area idata
001B 0000 .byte 0,0
.area data(ram, con, rel)
001D .dbfile E:\工作文件\18门锁板红外检测\程序\lock_m6418d.c
001D .blkb 2
.area idata
001D 0000 .byte 0,0
.area data(ram, con, rel)
001F .dbfile E:\工作文件\18门锁板红外检测\程序\lock_m6418d.c
001F .blkb 2
.area idata
001F 0000 .byte 0,0
.area data(ram, con, rel)
0021 .dbfile E:\工作文件\18门锁板红外检测\程序\lock_m6418d.c
0021 .blkb 2
.area idata
0021 0000 .byte 0,0
.area data(ram, con, rel)
0023 .dbfile E:\工作文件\18门锁板红外检测\程序\lock_m6418d.c
0023 .blkb 2
.area idata
0023 0000 .byte 0,0
.area data(ram, con, rel)
0025 .dbfile E:\工作文件\18门锁板红外检测\程序\lock_m6418d.c
0025 .blkb 1
.area idata
0025 00 .byte 0
.area data(ram, con, rel)
0026 .dbfile E:\工作文件\18门锁板红外检测\程序\lock_m6418d.c
0026 .dbsym s lock_flag _lock_flag A[19:19]c
0026 _KEY_State:
0026 .blkb 2
.area idata
0026 FFFF .byte 255,255
.area data(ram, con, rel)
0028 .dbfile E:\工作文件\18门锁板红外检测\程序\lock_m6418d.c
0028 .blkb 1
.area idata
0028 FF .byte 255
.area data(ram, con, rel)
0029 .dbfile E:\工作文件\18门锁板红外检测\程序\lock_m6418d.c
0029 .dbsym s KEY_State _KEY_State A[3:3]c
0029 _wb_State:
0029 .blkb 2
.area idata
0029 FFFF .byte 255,255
.area data(ram, con, rel)
002B .dbfile E:\工作文件\18门锁板红外检测\程序\lock_m6418d.c
002B .blkb 1
.area idata
002B FF .byte 255
.area data(ram, con, rel)
002C .dbfile E:\工作文件\18门锁板红外检测\程序\lock_m6418d.c
002C .dbsym s wb_State _wb_State A[3:3]c
.area text(rom, con, rel)
0000 .dbfile E:\工作文件\18门锁板红外检测\程序\lock_m6418d.c
0000 .dbfunc e uart1_init _uart1_init fV
.even
0000 _uart1_init::
0000 .dbline -1
0000 .dbline 42
0000 ; #include <iom64v.h>
0000 ; #include <macros.h>
0000 ; #include "delay.h"
0000 ; #define uint unsigned int
0000 ; #define uchar unsigned char
0000 ; ////////////////////////////////////////////////////////////////////////////////
0000 ; //////////////////////////////////////////////74HC595
0000 ; #define SERA_H PORTB|=BIT(4)
0000 ; #define SERA_L PORTB&=~BIT(4)
0000 ; #define SCKA_H PORTB|=BIT(2)
0000 ; #define SCKA_L PORTB&=~BIT(2)
0000 ; #define RCKA_H PORTB|=BIT(3)
0000 ; #define RCKA_L PORTB&=~BIT(3)
0000 ;
0000 ; #define SERB_H PORTB|=BIT(7)
0000 ; #define SERB_L PORTB&=~BIT(7)
0000 ; #define SCKB_H PORTB|=BIT(5)
0000 ; #define SCKB_L PORTB&=~BIT(5)
0000 ; #define RCKB_H PORTB|=BIT(6)
0000 ; #define RCKB_L PORTB&=~BIT(6)
0000 ; ////////////////////////////////////////////////////////////////////////////////
0000 ; ////////////////////////////////////////////////////////////////////////////////
0000 ; ////////////////////////////////////////////按键定义
0000 ; #define KEY17 (PING&BIT(1))==0
0000 ; #define KEY18 (PING&BIT(0))==0
0000 ; /////////////////////////////////////////////////////////////////////////////
0000 ; /////////////////////////////////////////////行程开关
0000 ; #define RF17 (PINE&BIT(6))==0
0000 ; #define RF18 (PINE&BIT(7))==0
0000 ; ////////////////////////////////////////////////////////////////////////////////
0000 ; static uchar machine_addr; //本机地址
0000 ; static uchar lock_open[19]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; //通讯标志位
0000 ; static uchar lock_flag[19]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
0000 ; static uchar KEY_State[3]={0xff,0xff,0xff};
0000 ; static uchar wb_State[3]={0xff,0xff,0xff};
0000 ; static uchar command; //通讯指令
0000 ; static uchar lock_umn; //锁号
0000 ; uchar tim,time;
0000 ; ////////////////////////////////////////////////////////////////////////////////
0000 ; ////////////////////////////////////////////////////////
0000 ; void uart1_init(void)
0000 ; {
0000 .dbline 43
0000 ; SREG&=~BIT(7);
0000 F894 bclr 7
0002 .dbline 44
0002 ; UCSR1B = 0x00; //disable while setting baud rate
0002 2224 clr R2
0004 20929A00 sts 154,R2
0008 .dbline 45
0008 ; UCSR1A = 0x00;
0008 20929B00 sts 155,R2
000C .dbline 46
000C ; UCSR1C = 0x06;
000C 86E0 ldi R24,6
000E 80939D00 sts 157,R24
0012 .dbline 47
0012 ; UBRR1L = 0x0B; //set baud rate lo
0012 8BE0 ldi R24,11
0014 80939900 sts 153,R24
0018 .dbline 48
0018 ; UBRR1H = 0x00; //set baud rate hi
0018 20929800 sts 152,R2
001C .dbline 49
001C ; UCSR1B = 0x98;
001C 88E9 ldi R24,152
001E 80939A00 sts 154,R24
0022 .dbline 50
0022 ; SREG|=BIT(7);
0022 7894 bset 7
0024 .dbline -2
0024 L1:
0024 .dbline 0 ; func end
0024 0895 ret
0026 .dbend
0026 .dbfunc e HR_IOINIT _HR_IOINIT fV
.even
0026 _HR_IOINIT::
0026 .dbline -1
0026 .dbline 55
0026 ; }
0026 ; ////////////////////////////////////////////////////////////////////////////////
0026 ; /////////////////////////////////////////////////////////
0026 ; void HR_IOINIT(void)
0026 ; {
0026 .dbline 57
0026 ; /////////////////////LOCK_OPEN
0026 ; PORTF=0X00;
0026 2224 clr R2
0028 20926200 sts 98,R2
002C .dbline 58
002C ; DDRF=0XFF;
002C 8FEF ldi R24,255
002E 80936100 sts 97,R24
0032 .dbline 59
0032 ; PORTA=0X00;
0032 2BBA out 0x1b,R2
0034 .dbline 60
0034 ; DDRA=0XFF;
0034 8ABB out 0x1a,R24
0036 .dbline 61
0036 ; DDRG|=BIT(3)|BIT(4);
0036 80916400 lds R24,100
003A 8861 ori R24,24
003C 80936400 sts 100,R24
0040 .dbline 62
0040 ; PORTG&=~BIT(3);
0040 80916500 lds R24,101
0044 877F andi R24,247
0046 80936500 sts 101,R24
004A .dbline 63
004A ; PORTG&=~BIT(4);
004A 80916500 lds R24,101
004E 8F7E andi R24,239
0050 80936500 sts 101,R24
0054 .dbline 65
0054 ; ///////////////////KEY_IN
0054 ; PORTC=0XFF;
0054 8FEF ldi R24,255
0056 85BB out 0x15,R24
0058 .dbline 66
0058 ; DDRC=0X00;
0058 24BA out 0x14,R2
005A .dbline 67
005A ; DDRG&=~BIT(0);
005A 80916400 lds R24,100
005E 8E7F andi R24,254
0060 80936400 sts 100,R24
0064 .dbline 68
0064 ; PORTG|=BIT(0)|BIT(1);
0064 80916500 lds R24,101
0068 8360 ori R24,3
006A 80936500 sts 101,R24
006E .dbline 69
006E ; DDRG&=~BIT(1);
006E 80916400 lds R24,100
0072 8D7F andi R24,253
0074 80936400 sts 100,R24
0078 .dbline 70
0078 ; PORTE|=BIT(6)|BIT(7);
0078 83B1 in R24,0x3
007A 806C ori R24,192
007C 83B9 out 0x3,R24
007E .dbline 71
007E ; DDRE&=~BIT(6);
007E 1698 cbi 0x2,6
0080 .dbline 72
0080 ; DDRE&=~BIT(7);
0080 1798 cbi 0x2,7
0082 .dbline 74
0082 ; ///////////////////LED_EN
0082 ; PORTB=0x00;
0082 28BA out 0x18,R2
0084 .dbline 75
0084 ; DDRB=0xff;
0084 8FEF ldi R24,255
0086 87BB out 0x17,R24
0088 .dbline 76
0088 ; PORTD&=~BIT(0);
0088 9098 cbi 0x12,0
008A .dbline 77
008A ; DDRD|=BIT(0);
008A 889A sbi 0x11,0
008C .dbline 79
008C ; ///////////////////74HC245_EN
008C ; DDRE|=BIT(2)|BIT(3)|BIT(4)|BIT(5);
008C 82B1 in R24,0x2
008E 8C63 ori R24,60
0090 82B9 out 0x2,R24
0092 .dbline 80
0092 ; PORTE|=BIT(2)|BIT(3)|BIT(4)|BIT(5);
0092 83B1 in R24,0x3
0094 8C63 ori R24,60
0096 83B9 out 0x3,R24
0098 .dbline 82
0098 ; ///////////////////RF_EN
0098 ; PORTG&=~BIT(2);
0098 80916500 lds R24,101
009C 8B7F andi R24,251
009E 80936500 sts 101,R24
00A2 .dbline 83
00A2 ; DDRG|=BIT(2);
00A2 80916400 lds R24,100
00A6 8460 ori R24,4
00A8 80936400 sts 100,R24
00AC .dbline 85
00AC ; ///////////////////485EN
00AC ; DDRD|=BIT(1);
00AC 899A sbi 0x11,1
00AE .dbline 86
00AE ; PORTD&=~BIT(1);
00AE 9198 cbi 0x12,1
00B0 .dbline 88
00B0 ; ///////////////////本机地址
00B0 ; DDRD&=~BIT(4);
00B0 8C98 cbi 0x11,4
00B2 .dbline 89
00B2 ; DDRD&=~BIT(5);
00B2 8D98 cbi 0x11,5
00B4 .dbline 90
00B4 ; DDRD&=~BIT(6);
00B4 8E98 cbi 0x11,6
00B6 .dbline 91
00B6 ; DDRD&=~BIT(7);
00B6 8F98 cbi 0x11,7
00B8 .dbline 92
00B8 ; PORTD|=BIT(4)|BIT(5)|BIT(6)|BIT(7);
00B8 82B3 in R24,0x12
00BA 806F ori R24,240
00BC 82BB out 0x12,R24
00BE .dbline 93
00BE ; delay_ms(100);
00BE 04E6 ldi R16,100
00C0 10E0 ldi R17,0
00C2 0E940000 xcall _delay_ms
00C6 .dbline 94
00C6 ; machine_addr=((~PIND)>>4)&0x0f;
00C6 80B3 in R24,0x10
00C8 8095 com R24
00CA 8295 swap R24
00CC 8F70 andi R24,#0x0F
00CE 8F70 andi R24,15
00D0 80930600 sts _machine_addr,R24
00D4 .dbline -2
00D4 L2:
00D4 .dbline 0 ; func end
00D4 0895 ret
00D6 .dbend
.area data(ram, con, rel)
002C .dbfile E:\工作文件\18门锁板红外检测\程序\lock_m6418d.c
002C L4:
002C .blkb 2
.area idata
002C 5BB5 .byte 91,181
.area data(ram, con, rel)
002E .dbfile E:\工作文件\18门锁板红外检测\程序\lock_m6418d.c
002E .blkb 2
.area idata
002E 0900 .byte 9,0
.area data(ram, con, rel)
0030 .dbfile E:\工作文件\18门锁板红外检测\程序\lock_m6418d.c
0030 .blkb 2
.area idata
0030 0000 .byte 0,0
.area data(ram, con, rel)
0032 .dbfile E:\工作文件\18门锁板红外检测\程序\lock_m6418d.c
0032 .blkb 2
.area idata
0032 0000 .byte 0,0
.area data(ram, con, rel)
0034 .dbfile E:\工作文件\18门锁板红外检测\程序\lock_m6418d.c
0034 .blkb 2
.area idata
0034 0000 .byte 0,0
.area data(ram, con, rel)
0036 .dbfile E:\工作文件\18门锁板红外检测\程序\lock_m6418d.c
0036 .blkb 2
.area idata
0036 0000 .byte 0,0
.area data(ram, con, rel)
0038 .dbfile E:\工作文件\18门锁板红外检测\程序\lock_m6418d.c
0038 .blkb 1
.area idata
0038 00 .byte 0
.area data(ram, con, rel)
0039 .dbfile E:\工作文件\18门锁板红外检测\程序\lock_m6418d.c
.area text(rom, con, rel)
00D6 .dbfile E:\工作文件\18门锁板红外检测\程序\lock_m6418d.c
00D6 .dbfunc e Send_udr _Send_udr fV
00D6 ; Check -> R10
00D6 ; udr_Send -> y+0
00D6 ; i -> R20
00D6 ; dat -> R10
00D6 ; com -> R12
.even
00D6 _Send_udr::
00D6 0E940000 xcall push_xgset303C
00DA A22E mov R10,R18
00DC C02E mov R12,R16
00DE 2D97 sbiw R28,13
00E0 .dbline -1
00E0 .dbline 98
00E0 ; }///////////////////////////////////////////////////////////////////////////////
00E0 ; /////////////////////////////////////////////////////////串口发送指令
00E0 ; void Send_udr(uchar com,uchar dat)
00E0 ; {
00E0 .dbline 99
00E0 ; uchar udr_Send[13]={0x5b,0xb5,0x09,0,0,0,0,0,0,0,0,0,0};
00E0 80E0 ldi R24,<L4
00E2 90E0 ldi R25,>L4
00E4 FE01 movw R30,R28
00E6 0DE0 ldi R16,13
00E8 10E0 ldi R17,0
00EA FA93 st -y,R31
00EC EA93 st -y,R30
00EE 9A93 st -y,R25
00F0 8A93 st -y,R24
00F2 0E940000 xcall asgnblk
00F6 .dbline 101
00F6 ; uchar i,Check;
00F6 ; udr_Send[3]=machine_addr;
00F6 20900600 lds R2,_machine_addr
00FA 2B82 std y+3,R2
00FC .dbline 102
00FC ; udr_Send[4]=com;
00FC CC82 std y+4,R12
00FE .dbline 103
00FE ; udr_Send[5]=dat;
00FE AD82 std y+5,R10
0100 .dbline 104
0100 ; for(i=0;i<3;i++)
0100 4427 clr R20
0102 0FC0 xjmp L11
0104 L8:
0104 .dbline 105
0104 ; {
0104 .dbline 106
0104 ; udr_Send[i+6]=KEY_State[i];
0104 80E0 ldi R24,<_KEY_State
0106 90E0 ldi R25,>_KEY_State
0108 E42F mov R30,R20
010A FF27 clr R31
010C E80F add R30,R24
010E F91F adc R31,R25
0110 2080 ldd R2,z+0
0112 CE01 movw R24,R28
0114 0696 adiw R24,6
0116 E42F mov R30,R20
0118 FF27 clr R31
011A E80F add R30,R24
011C F91F adc R31,R25
011E 2082 std z+0,R2
0120 .dbline 107
0120 ; }
0120 L9:
0120 .dbline 104
0120 4395 inc R20
0122 L11:
0122 .dbline 104
0122 4330 cpi R20,3
0124 78F3 brlo L8
0126 X0:
0126 .dbline 108
0126 ; for(i=0;i<3;i++)
0126 4427 clr R20
0128 0FC0 xjmp L16
012A L13:
012A .dbline 109
012A ; {
012A .dbline 110
012A ; udr_Send[9+i]=wb_State[i];
012A 80E0 ldi R24,<_wb_State
012C 90E0 ldi R25,>_wb_State
012E E42F mov R30,R20
0130 FF27 clr R31
0132 E80F add R30,R24
0134 F91F adc R31,R25
0136 2080 ldd R2,z+0
0138 CE01 movw R24,R28
013A 0996 adiw R24,9
013C E42F mov R30,R20
013E FF27 clr R31
0140 E80F add R30,R24
0142 F91F adc R31,R25
0144 2082 std z+0,R2
0146 .dbline 111
0146 ; }
0146 L14:
0146 .dbline 108
0146 4395 inc R20
0148 L16:
0148 .dbline 108
0148 4330 cpi R20,3
014A 78F3 brlo L13
014C X1:
014C .dbline 112
014C ; Check=udr_Send[2]^udr_Send[3]^udr_Send[4]^udr_Send[5]^udr_Send[6]^udr_Send[7]
014C 2B80 ldd R2,y+3
014E AA80 ldd R10,y+2
0150 A224 eor R10,R2
0152 2C80 ldd R2,y+4
0154 A224 eor R10,R2
0156 2D80 ldd R2,y+5
0158 A224 eor R10,R2
015A 2E80 ldd R2,y+6
015C A224 eor R10,R2
015E 2F80 ldd R2,y+7
0160 A224 eor R10,R2
0162 2884 ldd R2,y+8
0164 A224 eor R10,R2
0166 2984 ldd R2,y+9
0168 A224 eor R10,R2
016A 2A84 ldd R2,y+10
016C A224 eor R10,R2
016E 2B84 ldd R2,y+11
0170 A224 eor R10,R2
0172 .dbline 114
0172 ; ^udr_Send[8]^udr_Send[9]^udr_Send[10]^udr_Send[11];
0172 ; udr_Send[12]=Check;
0172 AC86 std y+12,R10
0174 .dbline 115
0174 ; PORTD|=BIT(1);
0174 919A sbi 0x12,1
0176 .dbline 116
0176 ; delay_ms(5);
0176 05E0 ldi R16,5
0178 10E0 ldi R17,0
017A 0E940000 xcall _delay_ms
017E .dbline 117
017E ; for(i=0;i<13;i++)
017E 4427 clr R20
0180 11C0 xjmp L32
0182 L33:
0182 .dbline 119
0182 ; {
0182 ; while(!(UCSR1A&BIT(5)));
0182 L34:
0182 .dbline 119
0182 20909B00 lds R2,155
0186 25FE sbrs R2,5
0188 FCCF rjmp L33
018A X2:
018A .dbline 120
018A ; UDR1=udr_Send[i];
018A CE01 movw R24,R28
018C E42F mov R30,R20
018E FF27 clr R31
0190 E80F add R30,R24
0192 F91F adc R31,R25
0194 2080 ldd R2,z+0
0196 20929C00 sts 156,R2
019A L36:
019A .dbline 121
019A ; while(!(UCSR1A&BIT(6)));
019A L37:
019A .dbline 121
019A 20909B00 lds R2,155
019E 26FE sbrs R2,6
01A0 FCCF rjmp L36
01A2 X3:
01A2 .dbline 122
01A2 ; }
01A2 L30:
01A2 .dbline 117
01A2 4395 inc R20
01A4 L32:
01A4 .dbline 117
01A4 4D30 cpi R20,13
01A6 68F3 brlo L34
01A8 X4:
01A8 .dbline 123
01A8 ; delay_ms(5);
01A8 05E0 ldi R16,5
01AA 10E0 ldi R17,0
01AC 0E940000 xcall _delay_ms
01B0 .dbline 124
01B0 ; PORTD&=~BIT(1);
01B0 9198 cbi 0x12,1
01B2 .dbline 125
01B2 ; delay_ms(5);
01B2 05E0 ldi R16,5
01B4 10E0 ldi R17,0
01B6 0E940000 xcall _delay_ms
01BA .dbline -2
01BA L3:
01BA .dbline 0 ; func end
01BA 2D96 adiw R28,13
01BC 0C940000 xjmp pop_xgset303C
01C0 .dbsym r Check 10 c
01C0 .dbsym l udr_Send 0 A[13:13]c
01C0 .dbsym r i 20 c
01C0 .dbsym r dat 10 c
01C0 .dbsym r com 12 c
01C0 .dbend
01C0 .dbfunc e hc595_sendbyteA _hc595_sendbyteA fV
01C0 ; i -> R20
01C0 ; date -> R10
.even
01C0 _hc595_sendbyteA::
01C0 AA92 st -y,R10
01C2 4A93 st -y,R20
01C4 A02E mov R10,R16
01C6 .dbline -1
01C6 .dbline 130
01C6 ; }
01C6 ; ////////////////////////////////////////////////////////////////////////////////
01C6 ; /////////////////////////////////////////////////////////595驱动
01C6 ; void hc595_sendbyteA(uchar date)
01C6 ; {
01C6 .dbline 132
01C6 ; unsigned char i;
01C6 ; RCKA_L;
01C6 C398 cbi 0x18,3
01C8 .dbline 133
01C8 ; for(i=0;i<8;i++)
01C8 4427 clr R20
01CA 0DC0 xjmp L43
01CC L40:
01CC .dbline 134
01CC ; {
01CC .dbline 135
01CC ; if(date&0x80)
01CC A7FE sbrs R10,7
01CE 02C0 rjmp L44
01D0 X5:
01D0 .dbline 136
01D0 ; {
01D0 .dbline 137
01D0 ; SERA_H;
01D0 C49A sbi 0x18,4
01D2 .dbline 138
01D2 ; }
01D2 01C0 xjmp L45
01D4 L44:
01D4 .dbline 140
01D4 ; else
01D4 ; {
01D4 .dbline 141
01D4 ; SERA_L;
01D4 C498 cbi 0x18,4
01D6 .dbline 142
01D6 ; }
01D6 L45:
01D6 .dbline 143
01D6 ; date<<=1;
01D6 AA0C lsl R10
01D8 .dbline 144
01D8 ; SCKA_H;
01D8 C29A sbi 0x18,2
01DA .dbline 145
01DA ; delay_us(5);
01DA 05E0 ldi R16,5
01DC 10E0 ldi R17,0
01DE 0E940000 xcall _delay_us
01E2 .dbline 146
01E2 ; SCKA_L;
01E2 C298 cbi 0x18,2
01E4 .dbline 147
01E4 ; }
01E4 L41:
01E4 .dbline 133
01E4 4395 inc R20
01E6 L43:
01E6 .dbline 133
01E6 4830 cpi R20,8
01E8 88F3 brlo L40
01EA X6:
01EA .dbline 148
01EA ; RCKA_H;
01EA C39A sbi 0x18,3
01EC .dbline -2
01EC L39:
01EC .dbline 0 ; func end
01EC 4991 ld R20,y+
01EE A990 ld R10,y+
01F0 0895 ret
01F2 .dbsym r i 20 c
01F2 .dbsym r date 10 c
01F2 .dbend
01F2 .dbfunc e hc595_sendbyteB _hc595_sendbyteB fV
01F2 ; i -> R20
01F2 ; date -> R10
.even
01F2 _hc595_sendbyteB::
01F2 AA92 st -y,R10
01F4 4A93 st -y,R20
01F6 A02E mov R10,R16
01F8 .dbline -1
01F8 .dbline 152
01F8 ; }
01F8 ; /////////////////////////////////////////////////////////////////////////////
01F8 ; void hc595_sendbyteB(uchar date)
01F8 ; {
01F8 .dbline 154
01F8 ; unsigned char i;
01F8 ; RCKB_L;
01F8 C698 cbi 0x18,6
01FA .dbline 155
01FA ; for(i=0;i<8;i++)
01FA 4427 clr R20
01FC 0DC0 xjmp L50
01FE L47:
01FE .dbline 156
01FE ; {
01FE .dbline 157
01FE ; if(date&0x80)
01FE A7FE sbrs R10,7
0200 02C0 rjmp L51
0202 X7:
0202 .dbline 158
0202 ; {
0202 .dbline 159
0202 ; SERB_H;
0202 C79A sbi 0x18,7
0204 .dbline 160
0204 ; }
0204 01C0 xjmp L52
0206 L51:
0206 .dbline 162
0206 ; else
0206 ; {
0206 .dbline 163
0206 ; SERB_L;
0206 C798 cbi 0x18,7
0208 .dbline 164
0208 ; }
0208 L52:
0208 .dbline 165
0208 ; date<<=1;
0208 AA0C lsl R10
020A .dbline 166
020A ; SCKB_H;
020A C59A sbi 0x18,5
020C .dbline 167
020C ; delay_us(5);
020C 05E0 ldi R16,5
020E 10E0 ldi R17,0
0210 0E940000 xcall _delay_us
0214 .dbline 168
0214 ; SCKB_L;
0214 C598 cbi 0x18,5
0216 .dbline 169
0216 ; }
0216 L48:
0216 .dbline 155
0216 4395 inc R20
0218 L50:
0218 .dbline 155
0218 4830 cpi R20,8
021A 88F3 brlo L47
021C X8:
021C .dbline 170
021C ; RCKB_H;
021C C69A sbi 0x18,6
021E .dbline -2
021E L46:
021E .dbline 0 ; func end
021E 4991 ld R20,y+
0220 A990 ld R10,y+
0222 0895 ret
0224 .dbsym r i 20 c
0224 .dbsym r date 10 c
0224 .dbend
0224 .dbfunc e door_flag _door_flag fV
.even
0224 _door_flag::
0224 .dbline -1
0224 .dbline 175
0224 ; }
0224 ; ////////////////////////////////////////////////////////////////////////////////
0224 ; /////////////////////////////////////////////////////////门状态检测
0224 ; void door_flag(void)
0224 ; {
0224 .dbline 176
0224 ; PORTE&=~BIT(2);
0224 1A98 cbi 0x3,2
0226 .dbline 177
0226 ; delay_ms(5);
0226 05E0 ldi R16,5
0228 10E0 ldi R17,0
022A 0E940000 xcall _delay_ms
022E .dbline 178
022E ; KEY_State[0]=PINC;
022E 23B2 in R2,0x13
0230 20922600 sts _KEY_State,R2
0234 .dbline 179
0234 ; hc595_sendbyteA(PINC);
0234 03B3 in R16,0x13
0236 C4DF xcall _hc595_sendbyteA
0238 .dbline 180
0238 ; PORTE|=BIT(2);
0238 1A9A sbi 0x3,2
023A .dbline 181
023A ; delay_ms(5);
023A 05E0 ldi R16,5
023C 10E0 ldi R17,0
023E 0E940000 xcall _delay_ms
0242 .dbline 182
0242 ; PORTE&=~BIT(3);
0242 1B98 cbi 0x3,3
0244 .dbline 183
0244 ; delay_ms(5);
0244 05E0 ldi R16,5
0246 10E0 ldi R17,0
0248 0E940000 xcall _delay_ms
024C .dbline 184
024C ; KEY_State[1]=PINC;
024C 23B2 in R2,0x13
024E 20922700 sts _KEY_State+1,R2
0252 .dbline 185
0252 ; hc595_sendbyteB(PINC);
0252 03B3 in R16,0x13
0254 CEDF xcall _hc595_sendbyteB
0256 .dbline 186
0256 ; PORTE|=BIT(3);
0256 1B9A sbi 0x3,3
0258 .dbline 187
0258 ; delay_ms(5);
0258 05E0 ldi R16,5
025A 10E0 ldi R17,0
025C 0E940000 xcall _delay_ms
0260 .dbline 188
0260 ; if(KEY17)
0260 20906300 lds R2,99
0264 21FC sbrc R2,1
0266 07C0 rjmp L55
0268 X9:
0268 .dbline 189
0268 ; {
0268 .dbline 190
0268 ; KEY_State[2]&=~BIT(0);
0268 80912800 lds R24,_KEY_State+2
026C 8E7F andi R24,254
026E 80932800 sts _KEY_State+2,R24
0272 .dbline 191
0272 ; PORTD&=~BIT(0);
0272 9098 cbi 0x12,0
0274 .dbline 192
0274 ; }else
0274 06C0 xjmp L56
0276 L55:
0276 .dbline 193
0276 ; {
0276 .dbline 194
0276 ; KEY_State[2]|=BIT(0);
0276 80912800 lds R24,_KEY_State+2
027A 8160 ori R24,1
027C 80932800 sts _KEY_State+2,R24
0280 .dbline 195
0280 ; PORTD|=BIT(0);
0280 909A sbi 0x12,0
0282 .dbline 196
0282 ; }
0282 L56:
0282 .dbline 197
0282 ; if(KEY18)
0282 20906300 lds R2,99
0286 20FC sbrc R2,0
0288 07C0 rjmp L59
028A X10:
028A .dbline 198
028A ; {
028A .dbline 199
028A ; KEY_State[2]&=~BIT(1);
028A 80912800 lds R24,_KEY_State+2
028E 8D7F andi R24,253
0290 80932800 sts _KEY_State+2,R24
0294 .dbline 200
0294 ; PORTB&=~BIT(0);
0294 C098 cbi 0x18,0
0296 .dbline 201
0296 ; }else
0296 06C0 xjmp L60
0298 L59:
0298 .dbline 202
0298 ; {
0298 .dbline 203
0298 ; KEY_State[2]|=BIT(1);
0298 80912800 lds R24,_KEY_State+2
029C 8260 ori R24,2
029E 80932800 sts _KEY_State+2,R24
02A2 .dbline 204
02A2 ; PORTB|=BIT(0);
02A2 C09A sbi 0x18,0
02A4 .dbline 205
02A4 ; }
02A4 L60:
02A4 .dbline -2
02A4 L53:
02A4 .dbline 0 ; func end
02A4 0895 ret
02A6 .dbend
02A6 .dbfunc e Goods_flag _Goods_flag fV
.even
02A6 _Goods_flag::
02A6 .dbline -1
02A6 .dbline 211
02A6 ;
02A6 ; }
02A6 ; ////////////////////////////////////////////////////////////////////////////////
02A6 ; //////////////////////////////////////////////////////红外物品检测
02A6 ; void Goods_flag(void)
02A6 ; {
02A6 .dbline 212
02A6 ; delay_ms(10);
02A6 0AE0 ldi R16,10
02A8 10E0 ldi R17,0
02AA 0E940000 xcall _delay_ms
02AE .dbline 213
02AE ; PORTE&=~BIT(4);
02AE 1C98 cbi 0x3,4
02B0 .dbline 214
02B0 ; delay_ms(5);
02B0 05E0 ldi R16,5
02B2 10E0 ldi R17,0
02B4 0E940000 xcall _delay_ms
02B8 .dbline 215
02B8 ; wb_State[0]=PINC;
02B8 23B2 in R2,0x13
02BA 20922900 sts _wb_State,R2
02BE .dbline 216
02BE ; PORTE|=BIT(4);
02BE 1C9A sbi 0x3,4
02C0 .dbline 217
02C0 ; delay_ms(5);
02C0 05E0 ldi R16,5
02C2 10E0 ldi R17,0
02C4 0E940000 xcall _delay_ms
02C8 .dbline 218
02C8 ; PORTE&=~BIT(5);
02C8 1D98 cbi 0x3,5
02CA .dbline 219
02CA ; delay_ms(5);
02CA 05E0 ldi R16,5
02CC 10E0 ldi R17,0
02CE 0E940000 xcall _delay_ms
02D2 .dbline 220
02D2 ; wb_State[1]=PINC;
02D2 23B2 in R2,0x13
02D4 20922A00 sts _wb_State+1,R2
02D8 .dbline 221
02D8 ; PORTE|=BIT(5);
02D8 1D9A sbi 0x3,5
02DA .dbline 222
02DA ; delay_ms(5);
02DA 05E0 ldi R16,5
02DC 10E0 ldi R17,0
02DE 0E940000 xcall _delay_ms
02E2 .dbline 223
02E2 ; if(RF17)
02E2 0E99 sbic 0x1,6
02E4 06C0 rjmp L65
02E6 X11:
02E6 .dbline 224
02E6 ; {
02E6 .dbline 225
02E6 ; wb_State[2]&=~BIT(0);
02E6 80912B00 lds R24,_wb_State+2
02EA 8E7F andi R24,254
02EC 80932B00 sts _wb_State+2,R24
02F0 .dbline 226
02F0 ; }else
02F0 05C0 xjmp L66
02F2 L65:
02F2 .dbline 227
02F2 ; wb_State[2]|=BIT(0);
02F2 80912B00 lds R24,_wb_State+2
02F6 8160 ori R24,1
02F8 80932B00 sts _wb_State+2,R24
02FC L66:
02FC .dbline 228
02FC ; if(RF18)
02FC 0F99 sbic 0x1,7
02FE 06C0 rjmp L69
0300 X12:
0300 .dbline 229
0300 ; {
0300 .dbline 230
0300 ; wb_State[2]&=~BIT(1);
0300 80912B00 lds R24,_wb_State+2
0304 8D7F andi R24,253
0306 80932B00 sts _wb_State+2,R24
030A .dbline 231
030A ; }else
030A 05C0 xjmp L70
030C L69:
030C .dbline 232
030C ; wb_State[2]|=BIT(1);
030C 80912B00 lds R24,_wb_State+2
0310 8260 ori R24,2
0312 80932B00 sts _wb_State+2,R24
0316 L70:
0316 .dbline 233
0316 ; PORTG&=~BIT(2);
0316 80916500 lds R24,101
031A 8B7F andi R24,251
031C 80936500 sts 101,R24
0320 .dbline -2
0320 L63:
0320 .dbline 0 ; func end
0320 0895 ret
0322 .dbend
0322 .dbfunc e pc_execution _pc_execution fV
.area func_lit(rom, con, rel)
0000 L96:
0000 5402 .word `L73
0002 BB01 .word `L78
0004 C301 .word `L79
0006 CB01 .word `L80
0008 D301 .word `L81
000A DB01 .word `L82
000C E301 .word `L83
000E EB01 .word `L84
0010 F301 .word `L85
0012 FB01 .word `L86
0014 0202 .word `L87
0016 0902 .word `L88
0018 1002 .word `L89
001A 1702 .word `L90
001C 1E02 .word `L91
001E 2502 .word `L92
0020 2C02 .word `L93
0022 3302 .word `L94
0024 3D02 .word `L95
.area text(rom, con, rel)
; com -> R10
; dat -> R12
.even
0322 _pc_execution::
0322 0E940000 xcall push_xgset303C
0326 C02E mov R12,R16
0328 .dbline -1
0328 .dbline 238
0328 ; }
0328 ; ////////////////////////////////////////////////////////////////////////////////
0328 ; ////////////////////////////////////////////////////////上位机开锁
0328 ; void pc_execution(uchar dat)
0328 ; {
0328 .dbline 240
0328 ; uchar com;
0328 ; com=dat;
0328 AC2C mov R10,R12
032A .dbline 241
032A ; PORTF=0x00;
032A 2224 clr R2
032C 20926200 sts 98,R2
0330 .dbline 242
0330 ; PORTA=0x00;
0330 2BBA out 0x1b,R2
0332 .dbline 243
0332 ; PORTG&=~BIT(3);
0332 80916500 lds R24,101
0336 877F andi R24,247
0338 80936500 sts 101,R24
033C .dbline 244
033C ; PORTG&=~BIT(4);
033C 80916500 lds R24,101
0340 8F7E andi R24,239
0342 80936500 sts 101,R24
0346 .dbline 245
0346 ; switch (com)
0346 4A2D mov R20,R10
0348 5527 clr R21
034A 4030 cpi R20,0
034C E0E0 ldi R30,0
034E 5E07 cpc R21,R30
0350 0CF4 brge X16
0352 9CC0 xjmp L74
0354 X16:
0354 X13:
0354 82E1 ldi R24,18
0356 90E0 ldi R25,0
0358 8417 cp R24,R20
035A 9507 cpc R25,R21
035C 0CF4 brge X17
035E 96C0 xjmp L74
0360 X17:
0360 X14:
0360 80E0 ldi R24,<L96
0362 90E0 ldi R25,>L96
0364 FA01 movw R30,R20
0366 EE0F lsl R30
0368 FF1F rol R31
036A E80F add R30,R24
036C F91F adc R31,R25
036E 2790 elpm R2,Z+
0370 3690 elpm R3,Z
0372 F101 movw R30,R2
0374 0994 ijmp
0376 X15:
0376 .dbfile E:\工作文件\18门锁板红外检测\程序\lock_m6418d.c
0376 .dbline 246
0376 ; {
0376 .dbline 248
0376 ; case 0:
0376 ; return;
0376 .dbline 249
0376 ; break;
0376 L78:
0376 .dbline 251
0376 ; case 1:
0376 ; PORTF=0x80;
0376 80E8 ldi R24,128
0378 80936200 sts 98,R24
037C .dbline 252
037C ; delay_ms(300); //1开锁
037C 0CE2 ldi R16,300
037E 11E0 ldi R17,1
0380 0E940000 xcall _delay_ms
0384 .dbline 253
0384 ; break;
0384 83C0 xjmp L75
0386 L79:
0386 .dbline 255
0386 ; case 2:
0386 ; PORTF=0x40;
0386 80E4 ldi R24,64
0388 80936200 sts 98,R24
038C .dbline 256
038C ; delay_ms(300); //2开锁
038C 0CE2 ldi R16,300
038E 11E0 ldi R17,1
0390 0E940000 xcall _delay_ms
0394 .dbline 257
0394 ; break;
0394 7BC0 xjmp L75
0396 L80:
0396 .dbline 259
0396 ; case 3:
0396 ; PORTF=0x20;
0396 80E2 ldi R24,32
0398 80936200 sts 98,R24
039C .dbline 260
039C ; delay_ms(300); //3开锁
039C 0CE2 ldi R16,300
039E 11E0 ldi R17,1
03A0 0E940000 xcall _delay_ms
03A4 .dbline 261
03A4 ; break;
03A4 73C0 xjmp L75
03A6 L81:
03A6 .dbline 263
03A6 ; case 4:
03A6 ; PORTF=0x10;
03A6 80E1 ldi R24,16
03A8 80936200 sts 98,R24
03AC .dbline 264
03AC ; delay_ms(300); //4开锁
03AC 0CE2 ldi R16,300
03AE 11E0 ldi R17,1
03B0 0E940000 xcall _delay_ms
03B4 .dbline 265
03B4 ; break;
03B4 6BC0 xjmp L75
03B6 L82:
03B6 .dbline 267
03B6 ; case 5:
03B6 ; PORTF=0x08;
03B6 88E0 ldi R24,8
03B8 80936200 sts 98,R24
03BC .dbline 268
03BC ; delay_ms(300); //5开锁
03BC 0CE2 ldi R16,300
03BE 11E0 ldi R17,1
03C0 0E940000 xcall _delay_ms
03C4 .dbline 269
03C4 ; break;
03C4 63C0 xjmp L75
03C6 L83:
03C6 .dbline 271
03C6 ; case 6:
03C6 ; PORTF=0x04;
03C6 84E0 ldi R24,4
03C8 80936200 sts 98,R24
03CC .dbline 272
03CC ; delay_ms(300); //6开锁
03CC 0CE2 ldi R16,300
03CE 11E0 ldi R17,1
03D0 0E940000 xcall _delay_ms
03D4 .dbline 273
03D4 ; break;
03D4 5BC0 xjmp L75
03D6 L84:
03D6 .dbline 275
03D6 ; case 7:
03D6 ; PORTF=0x02;
03D6 82E0 ldi R24,2
03D8 80936200 sts 98,R24
03DC .dbline 276
03DC ; delay_ms(300); //7开锁
03DC 0CE2 ldi R16,300
03DE 11E0 ldi R17,1
03E0 0E940000 xcall _delay_ms
03E4 .dbline 277
03E4 ; break;
03E4 53C0 xjmp L75
03E6 L85:
03E6 .dbline 279
03E6 ; case 8:
03E6 ; PORTF=0x01;
03E6 81E0 ldi R24,1
03E8 80936200 sts 98,R24
03EC .dbline 280
03EC ; delay_ms(300); //8开锁
03EC 0CE2 ldi R16,300
03EE 11E0 ldi R17,1
03F0 0E940000 xcall _delay_ms
03F4 .dbline 281
03F4 ; break;
03F4 4BC0 xjmp L75
03F6 L86:
03F6 .dbline 283
03F6 ; case 9:
03F6 ; PORTA=0x01;
03F6 81E0 ldi R24,1
03F8 8BBB out 0x1b,R24
03FA .dbline 284
03FA ; delay_ms(300); //9开锁
03FA 0CE2 ldi R16,300
03FC 11E0 ldi R17,1
03FE 0E940000 xcall _delay_ms
0402 .dbline 285
0402 ; break;
0402 44C0 xjmp L75
0404 L87:
0404 .dbline 287
0404 ; case 0x0A:
0404 ; PORTA=0x02;
0404 82E0 ldi R24,2
0406 8BBB out 0x1b,R24
0408 .dbline 288
0408 ; delay_ms(300); //10开锁
0408 0CE2 ldi R16,300
040A 11E0 ldi R17,1
040C 0E940000 xcall _delay_ms
0410 .dbline 289
0410 ; break;
0410 3DC0 xjmp L75
0412 L88:
0412 .dbline 291
0412 ; case 0x0B:
0412 ; PORTA=0x04;
0412 84E0 ldi R24,4
0414 8BBB out 0x1b,R24
0416 .dbline 292
0416 ; delay_ms(300); //11开锁
0416 0CE2 ldi R16,300
0418 11E0 ldi R17,1
041A 0E940000 xcall _delay_ms
041E .dbline 293
041E ; break;
041E 36C0 xjmp L75
0420 L89:
0420 .dbline 295
0420 ; case 0x0C:
0420 ; PORTA=0x08;
0420 88E0 ldi R24,8
0422 8BBB out 0x1b,R24
0424 .dbline 296
0424 ; delay_ms(300); //12开锁
0424 0CE2 ldi R16,300
0426 11E0 ldi R17,1
0428 0E940000 xcall _delay_ms
042C .dbline 297
042C ; break;
042C 2FC0 xjmp L75
042E L90:
042E .dbline 299
042E ; case 0x0D:
042E ; PORTA=0x10;
042E 80E1 ldi R24,16
0430 8BBB out 0x1b,R24
0432 .dbline 300
0432 ; delay_ms(300); //13开锁
0432 0CE2 ldi R16,300
0434 11E0 ldi R17,1
0436 0E940000 xcall _delay_ms
043A .dbline 301
043A ; break;
043A 28C0 xjmp L75
043C L91:
043C .dbline 303
043C ; case 0x0E:
043C ; PORTA=0x20;
043C 80E2 ldi R24,32
043E 8BBB out 0x1b,R24
0440 .dbline 304
0440 ; delay_ms(300); //14开锁
0440 0CE2 ldi R16,300
0442 11E0 ldi R17,1
0444 0E940000 xcall _delay_ms
0448 .dbline 305
0448 ; break;
0448 21C0 xjmp L75
044A L92:
044A .dbline 307
044A ; case 0x0F:
044A ; PORTA=0x40;
044A 80E4 ldi R24,64
044C 8BBB out 0x1b,R24
044E .dbline 308
044E ; delay_ms(300); //15开锁
044E 0CE2 ldi R16,300
0450 11E0 ldi R17,1
0452 0E940000 xcall _delay_ms
0456 .dbline 309
0456 ; break;
0456 1AC0 xjmp L75
0458 L93:
0458 .dbline 311
0458 ; case 0x10:
0458 ; PORTA=0x80;
0458 80E8 ldi R24,128
045A 8BBB out 0x1b,R24
045C .dbline 312
045C ; delay_ms(300); //16开锁
045C 0CE2 ldi R16,300
045E 11E0 ldi R17,1
0460 0E940000 xcall _delay_ms
0464 .dbline 313
0464 ; break;
0464 13C0 xjmp L75
0466 L94:
0466 .dbline 315
0466 ; case 0x11:
0466 ; PORTG|=BIT(3);
0466 80916500 lds R24,101
046A 8860 ori R24,8
046C 80936500 sts 101,R24
0470 .dbline 316
0470 ; delay_ms(300); //17开锁
0470 0CE2 ldi R16,300
0472 11E0 ldi R17,1
0474 0E940000 xcall _delay_ms
0478 .dbline 317
0478 ; break;
0478 09C0 xjmp L75
047A L95:
047A .dbline 319
047A ; case 0x12:
047A ; PORTG|=BIT(4);
047A 80916500 lds R24,101
047E 8061 ori R24,16
0480 80936500 sts 101,R24
0484 .dbline 320
0484 ; delay_ms(300); //18开锁
0484 0CE2 ldi R16,300
0486 11E0 ldi R17,1
0488 0E940000 xcall _delay_ms
048C .dbline 321
048C ; break;
048C L74:
048C L75:
048C .dbline 323
048C ; }
048C ; PORTF=0x00;
048C 2224 clr R2
048E 20926200 sts 98,R2
0492 .dbline 324
0492 ; PORTA=0x00;
0492 2BBA out 0x1b,R2
0494 .dbline 325
0494 ; PORTG&=~BIT(3);
0494 80916500 lds R24,101
0498 877F andi R24,247
049A 80936500 sts 101,R24
049E .dbline 326
049E ; PORTG&=~BIT(4);
049E 80916500 lds R24,101
04A2 8F7E andi R24,239
04A4 80936500 sts 101,R24
04A8 .dbline -2
04A8 L73:
04A8 .dbline 0 ; func end
04A8 0C940000 xjmp pop_xgset303C
04AC .dbsym r com 10 c
04AC .dbsym r dat 12 c
04AC .dbend
04AC .dbfunc e pc_comInquiry _pc_comInquiry fV
04AC ; i -> R20
.even
04AC _pc_comInquiry::
04AC 4A93 st -y,R20
04AE .dbline -1
04AE .dbline 331
04AE ; }
04AE ; ////////////////////////////////////////////////////////////////////////////////
04AE ; ////////////////////////////////////////////////////////上位机操作检测
04AE ; void pc_comInquiry(void)
04AE ; {
04AE .dbline 333
04AE ; uchar i;
04AE ; if(lock_flag[0]==0xaa)
04AE 80911300 lds R24,_lock_flag
04B2 8A3A cpi R24,170
04B4 B1F4 brne L98
04B6 X18:
04B6 .dbline 334
04B6 ; {lock_flag[0]=0;
04B6 .dbline 334
04B6 2224 clr R2
04B8 20921300 sts _lock_flag,R2
04BC .dbline 335
04BC ; PORTG|=BIT(2);
04BC 80916500 lds R24,101
04C0 8460 ori R24,4
04C2 80936500 sts 101,R24
04C6 .dbline 336
04C6 ; if(lock_open[0]==0xd2)
04C6 80910000 lds R24,_lock_open
04CA 823D cpi R24,210
04CC 51F4 brne L100
04CE X19:
04CE .dbline 337
04CE ; {lock_open[0]=0;
04CE .dbline 337
04CE 20920000 sts _lock_open,R2
04D2 .dbline 338
04D2 ; door_flag();
04D2 A8DE xcall _door_flag
04D4 .dbline 339
04D4 ; Goods_flag();
04D4 E8DE xcall _Goods_flag
04D6 .dbline 340
04D6 ; Send_udr(0xc2,i);
04D6 242F mov R18,R20
04D8 02EC ldi R16,194
04DA FDDD xcall _Send_udr
04DC .dbline 341
04DC ; lock_open[0]=0;
04DC 2224 clr R2
04DE 20920000 sts _lock_open,R2
04E2 .dbline 342
04E2 ; }
04E2 L100:
04E2 .dbline 343
04E2 ; }
04E2 L98:
04E2 .dbline 344
04E2 ; for(i=1;i<19;i++)
04E2 41E0 ldi R20,1
04E4 2AC0 xjmp L105
04E6 L102:
04E6 .dbline 345
04E6 ; {
04E6 .dbline 346
04E6 ; if(lock_flag[i]==0xaa)
04E6 80E0 ldi R24,<_lock_flag
04E8 90E0 ldi R25,>_lock_flag
04EA E42F mov R30,R20
04EC FF27 clr R31
04EE E80F add R30,R24
04F0 F91F adc R31,R25
04F2 8081 ldd R24,z+0
04F4 8A3A cpi R24,170
04F6 D9F4 brne L106
04F8 X20:
04F8 .dbline 347
04F8 ; {
04F8 .dbline 348
04F8 ; lock_flag[i]=0;
04F8 80E0 ldi R24,<_lock_flag
04FA 90E0 ldi R25,>_lock_flag
04FC E42F mov R30,R20
04FE FF27 clr R31
0500 E80F add R30,R24
0502 F91F adc R31,R25
0504 2224 clr R2
0506 2082 std z+0,R2
0508 .dbline 349
0508 ; if(lock_open[i]==0xd1)
0508 80E0 ldi R24,<_lock_open
050A 90E0 ldi R25,>_lock_open
050C E42F mov R30,R20
050E FF27 clr R31
0510 E80F add R30,R24
0512 F91F adc R31,R25
0514 8081 ldd R24,z+0
0516 813D cpi R24,209
0518 51F4 brne L108
051A X21:
051A .dbline 350
051A ; {
051A .dbline 351
051A ; pc_execution(i);
051A 042F mov R16,R20
051C 02DF xcall _pc_execution
051E .dbline 353
051E ; //Send_udr(0xc1,i);
051E ; lock_open[i]=0;
051E 80E0 ldi R24,<_lock_open
0520 90E0 ldi R25,>_lock_open
0522 E42F mov R30,R20
0524 FF27 clr R31
0526 E80F add R30,R24
0528 F91F adc R31,R25
052A 2224 clr R2
052C 2082 std z+0,R2
052E .dbline 354
052E ; }
052E L108:
052E .dbline 355
052E ; }
052E L106:
052E .dbline 356
052E ; PORTG&=~BIT(2);
052E 80916500 lds R24,101
0532 8B7F andi R24,251
0534 80936500 sts 101,R24
0538 .dbline 357
0538 ; }
0538 L103:
0538 .dbline 344
0538 4395 inc R20
053A L105:
053A .dbline 344
053A 4331 cpi R20,19
053C A0F2 brlo L102
053E X22:
053E .dbline -2
053E L97:
053E .dbline 0 ; func end
053E 4991 ld R20,y+
0540 0895 ret
0542 .dbsym r i 20 c
0542 .dbend
0542 .dbfunc e main _main fV
.even
0542 _main::
0542 .dbline -1
0542 .dbline 362
0542 ; }
0542 ; ///////////////////////////////////////////////////////////////////////////////
0542 ; ///////////////////////////////////////////////主程序
0542 ; void main(void)
0542 ; {
0542 .dbline 363
0542 ; HR_IOINIT();
0542 71DD xcall _HR_IOINIT
0544 .dbline 364
0544 ; uart1_init();
0544 5DDD xcall _uart1_init
0546 .dbline 365
0546 ; door_flag();
0546 6EDE xcall _door_flag
0548 .dbline 366
0548 ; Goods_flag();
0548 AEDE xcall _Goods_flag
054A 1CC0 xjmp L112
054C L111:
054C .dbline 368
054C ; while(1)
054C ; {
054C .dbline 369
054C ; for(tim=0;tim<200;tim++)
054C 2224 clr R2
054E 20920300 sts _tim,R2
0552 13C0 xjmp L117
0554 L114:
0554 .dbline 370
0554 ; for(time=0;time<200;time++)
0554 2224 clr R2
0556 20920200 sts _time,R2
055A 06C0 xjmp L121
055C L118:
055C .dbline 371
055C ; {
055C .dbline 372
055C ; pc_comInquiry();
055C A7DF xcall _pc_comInquiry
055E .dbline 373
055E ; }
055E L119:
055E .dbline 370
055E 80910200 lds R24,_time
0562 8F5F subi R24,255 ; addi 1
0564 80930200 sts _time,R24
0568 L121:
0568 .dbline 370
0568 80910200 lds R24,_time
056C 883C cpi R24,200
056E B0F3 brlo L118
0570 X23:
0570 L115:
0570 .dbline 369
0570 80910300 lds R24,_tim
0574 8F5F subi R24,255 ; addi 1
0576 80930300 sts _tim,R24
057A L117:
057A .dbline 369
057A 80910300 lds R24,_tim
057E 883C cpi R24,200
0580 48F3 brlo L114
0582 X24:
0582 .dbline 374
0582 ; door_flag();
0582 50DE xcall _door_flag
0584 .dbline 375
0584 ; }
0584 L112:
0584 .dbline 367
0584 E3CF xjmp L111
0586 X25:
0586 .dbline -2
0586 L110:
0586 .dbline 0 ; func end
0586 0895 ret
0588 .dbend
.area vector(rom, abs)
.org 120
0078 0C94C402 jmp _uart1_rx_isr
.area text(rom, con, rel)
0588 .dbfile E:\工作文件\18门锁板红外检测\程序\lock_m6418d.c
.area bss(ram, con, rel)
0000 .dbfile E:\工作文件\18门锁板红外检测\程序\lock_m6418d.c
0000 L123:
0000 .blkb 1
0001 L124:
0001 .blkb 1
.area text(rom, con, rel)
0588 .dbfile E:\工作文件\18门锁板红外检测\程序\lock_m6418d.c
0588 .dbfunc e uart1_rx_isr _uart1_rx_isr fV
0588 .dbsym s pc_ia L124 c
0588 .dbsym s pc_ic L123 c
0588 ; pc_udr -> R16
.even
0588 _uart1_rx_isr::
0588 2A92 st -y,R2
058A 0A93 st -y,R16
058C 2A93 st -y,R18
058E 3A93 st -y,R19
0590 8A93 st -y,R24
0592 9A93 st -y,R25
0594 AA93 st -y,R26
0596 EA93 st -y,R30
0598 FA93 st -y,R31
059A 2FB6 IN R2,63
059C 2A92 st -y,R2
059E .dbline -1
059E .dbline 382
059E ; }
059E ; ///////////////////////////////////////////////////////////////////////////////
059E ; ///////////////////////////////////////////////////////////////////////////////
059E ; #pragma interrupt_handler uart1_rx_isr:iv_USART1_RXC
059E ; ///////////////////////////////////////////////////////////////////////////////
059E ; void uart1_rx_isr(void) //接收中断
059E ; {
059E .dbline 386
059E ; unsigned char pc_udr; //临时存放UDR值,提高执行效率、防止UDR数值改变
059E ; static unsigned char pc_ic; //帧数据异或校验
059E ; static unsigned char pc_ia;
059E ; pc_udr = UDR1;
059E 00919C00 lds R16,156
05A2 .dbline 387
05A2 ; switch (pc_ia)
05A2 20910100 lds R18,L124
05A6 3327 clr R19
05A8 2030 cpi R18,0
05AA 2307 cpc R18,R19
05AC 41F1 breq L128
05AE X26:
05AE 2130 cpi R18,1
05B0 E0E0 ldi R30,0
05B2 3E07 cpc R19,R30
05B4 71F1 breq L131
05B6 X27:
05B6 2230 cpi R18,2
05B8 E0E0 ldi R30,0
05BA 3E07 cpc R19,R30
05BC 09F4 brne X44
05BE 38C0 xjmp L134
05C0 X44:
05C0 X28:
05C0 2330 cpi R18,3
05C2 E0E0 ldi R30,0
05C4 3E07 cpc R19,R30
05C6 09F4 brne X45
05C8 42C0 xjmp L137
05CA X45:
05CA X29:
05CA 2430 cpi R18,4
05CC E0E0 ldi R30,0
05CE 3E07 cpc R19,R30
05D0 09F4 brne X46
05D2 4EC0 xjmp L140
05D4 X46:
05D4 X30:
05D4 2530 cpi R18,5
05D6 E0E0 ldi R30,0
05D8 3E07 cpc R19,R30
05DA 09F4 brne X47
05DC 5AC0 xjmp L143
05DE X47:
05DE X31:
05DE 2630 cpi R18,6
05E0 E0E0 ldi R30,0
05E2 3E07 cpc R19,R30
05E4 09F4 brne X48
05E6 66C0 xjmp L146
05E8 X48:
05E8 X32:
05E8 2730 cpi R18,7
05EA E0E0 ldi R30,0
05EC 3E07 cpc R19,R30
05EE 09F4 brne X49
05F0 70C0 xjmp L149
05F2 X49:
05F2 X33:
05F2 2830 cpi R18,8
05F4 E0E0 ldi R30,0
05F6 3E07 cpc R19,R30
05F8 09F4 brne X50
05FA 7AC0 xjmp L152
05FC X50:
05FC X34:
05FC 9DC0 xjmp L125
05FE L128:
05FE .dbline 391
05FE ; {
05FE ; case 0:
05FE ; //同步字节
05FE ; if (pc_udr!= 0x5c)
05FE 0C35 cpi R16,92
0600 21F0 breq L129
0602 X35:
0602 .dbline 392
0602 ; { //检测同步字节是否正确/
0602 .dbline 393
0602 ; pc_ia=0;
0602 2224 clr R2
0604 20920100 sts L124,R2
0608 .dbline 394
0608 ; return; //不正确则退出/
0608 97C0 xjmp L122
060A L129:
060A .dbline 396
060A ; }else
060A ; pc_ia=1; //检测全部通过,则进入下面接收/
060A 81E0 ldi R24,1
060C 80930100 sts L124,R24
0610 .dbline 397
0610 ; break;
0610 93C0 xjmp L126
0612 L131:
0612 .dbline 399
0612 ; case 1: //同步字节
0612 ; if (pc_udr != 0xc5)
0612 053C cpi R16,197
0614 31F0 breq L132
0616 X36:
0616 .dbline 400
0616 ; { //检测同步字节是否正确/
0616 .dbline 401
0616 ; pc_ia=0;
0616 2224 clr R2
0618 20920100 sts L124,R2
061C .dbline 402
061C ; pc_ic=0;
061C 20920000 sts L123,R2
0620 .dbline 403
0620 ; return; //不正确则退出/
0620 8BC0 xjmp L122
0622 L132:
0622 .dbline 405
0622 ; }else
0622 ; {
0622 .dbline 406
0622 ; pc_ia=2; //检测全部通过,则进入下面接收/
0622 82E0 ldi R24,2
0624 80930100 sts L124,R24
0628 .dbline 407
0628 ; pc_ic=0;
0628 2224 clr R2
062A 20920000 sts L123,R2
062E .dbline 408
062E ; }
062E .dbline 409
062E ; break;
062E 84C0 xjmp L126
0630 L134:
0630 .dbline 412
0630 ; case 2:
0630 ; //长度字节/
0630 ; if (pc_udr != 0x05)
0630 0530 cpi R16,5
0632 21F0 breq L135
0634 X37:
0634 .dbline 413
0634 ; {
0634 .dbline 414
0634 ; pc_ia=0;
0634 2224 clr R2
0636 20920100 sts L124,R2
063A .dbline 415
063A ; return;
063A 7EC0 xjmp L122
063C L135:
063C .dbline 417
063C ; }else
063C ; {
063C .dbline 418
063C ; pc_ic ^= pc_udr;
063C 20900000 lds R2,L123
0640 2026 eor R2,R16
0642 20920000 sts L123,R2
0646 .dbline 419
0646 ; pc_ia=3;
0646 83E0 ldi R24,3
0648 80930100 sts L124,R24
064C .dbline 420
064C ; }
064C .dbline 421
064C ; break;
064C 75C0 xjmp L126
064E L137:
064E .dbline 423
064E ; case 3:
064E ; if (pc_udr !=machine_addr ) //地址字节/
064E 20900600 lds R2,_machine_addr
0652 0215 cp R16,R2
0654 21F0 breq L138
0656 X38:
0656 .dbline 424
0656 ; {
0656 .dbline 425
0656 ; pc_ia=0;
0656 2224 clr R2
0658 20920100 sts L124,R2
065C .dbline 426
065C ; return;
065C 6DC0 xjmp L122
065E L138:
065E .dbline 428
065E ; }else
065E ; {
065E .dbline 429
065E ; pc_ic ^= pc_udr;
065E 20900000 lds R2,L123
0662 2026 eor R2,R16
0664 20920000 sts L123,R2
0668 .dbline 430
0668 ; pc_ia=4;
0668 84E0 ldi R24,4
066A 80930100 sts L124,R24
066E .dbline 431
066E ; }
066E .dbline 432
066E ; break;
066E 64C0 xjmp L126
0670 L140:
0670 .dbline 434
0670 ; case 4:
0670 ; if(pc_udr==0)
0670 0023 tst R16
0672 21F4 brne L141
0674 X39:
0674 .dbline 435
0674 ; {
0674 .dbline 436
0674 ; pc_ia=0;
0674 2224 clr R2
0676 20920100 sts L124,R2
067A .dbline 437
067A ; return;
067A 5EC0 xjmp L122
067C L141:
067C .dbline 439
067C ; }else
067C ; { //命令字节/
067C .dbline 440
067C ; command = pc_udr; //接收命令,放入对应字节/
067C 00930500 sts _command,R16
0680 .dbline 441
0680 ; pc_ic ^= pc_udr; //异或校验/
0680 20900000 lds R2,L123
0684 2026 eor R2,R16
0686 20920000 sts L123,R2
068A .dbline 442
068A ; pc_ia=5;
068A 85E0 ldi R24,5
068C 80930100 sts L124,R24
0690 .dbline 443
0690 ; }
0690 .dbline 444
0690 ; break;
0690 53C0 xjmp L126
0692 L143:
0692 .dbline 446
0692 ; case 5: //锁号
0692 ; if(pc_udr>=19)
0692 0331 cpi R16,19
0694 20F0 brlo L144
0696 X40:
0696 .dbline 447
0696 ; {
0696 .dbline 448
0696 ; pc_ia=0;
0696 2224 clr R2
0698 20920100 sts L124,R2
069C .dbline 449
069C ; return;
069C 4DC0 xjmp L122
069E L144:
069E .dbline 451
069E ; }else
069E ; {
069E .dbline 452
069E ; lock_umn = pc_udr; //接收命令,放入对应字节/
069E 00930400 sts _lock_umn,R16
06A2 .dbline 453
06A2 ; pc_ic ^= pc_udr; //异或校验/
06A2 20900000 lds R2,L123
06A6 2026 eor R2,R16
06A8 20920000 sts L123,R2
06AC .dbline 454
06AC ; pc_ia=6;
06AC 86E0 ldi R24,6
06AE 80930100 sts L124,R24
06B2 .dbline 455
06B2 ; }
06B2 .dbline 456
06B2 ; break;
06B2 42C0 xjmp L126
06B4 L146:
06B4 .dbline 459
06B4 ; case 6:
06B4 ; //数据
06B4 ; if (pc_udr!=0)
06B4 0023 tst R16
06B6 21F0 breq L147
06B8 X41:
06B8 .dbline 460
06B8 ; {
06B8 .dbline 461
06B8 ; pc_ia=0;
06B8 2224 clr R2
06BA 20920100 sts L124,R2
06BE .dbline 462
06BE ; return;
06BE 3CC0 xjmp L122
06C0 L147:
06C0 .dbline 464
06C0 ; }else
06C0 ; {
06C0 .dbline 465
06C0 ; pc_ic ^= pc_udr;
06C0 20900000 lds R2,L123
06C4 2026 eor R2,R16
06C6 20920000 sts L123,R2
06CA .dbline 466
06CA ; pc_ia=7;
06CA 87E0 ldi R24,7
06CC 80930100 sts L124,R24
06D0 .dbline 467
06D0 ; }
06D0 .dbline 468
06D0 ; break;
06D0 33C0 xjmp L126
06D2 L149:
06D2 .dbline 471
06D2 ; case 7:
06D2 ; //数据
06D2 ; if (pc_udr!=0)
06D2 0023 tst R16
06D4 21F0 breq L150
06D6 X42:
06D6 .dbline 472
06D6 ; {
06D6 .dbline 473
06D6 ; pc_ia=0;
06D6 2224 clr R2
06D8 20920100 sts L124,R2
06DC .dbline 474
06DC ; return;
06DC 2DC0 xjmp L122
06DE L150:
06DE .dbline 476
06DE ; }else
06DE ; {
06DE .dbline 477
06DE ; pc_ic ^= pc_udr;
06DE 20900000 lds R2,L123
06E2 2026 eor R2,R16
06E4 20920000 sts L123,R2
06E8 .dbline 478
06E8 ; pc_ia=8;
06E8 88E0 ldi R24,8
06EA 80930100 sts L124,R24
06EE .dbline 479
06EE ; }
06EE .dbline 480
06EE ; break;
06EE 24C0 xjmp L126
06F0 L152:
06F0 .dbline 483
06F0 ; case 8:
06F0 ; //校验
06F0 ; if (pc_ic != pc_udr)
06F0 20900000 lds R2,L123
06F4 2016 cp R2,R16
06F6 21F0 breq L153
06F8 X43:
06F8 .dbline 484
06F8 ; {
06F8 .dbline 485
06F8 ; pc_ia=0;
06F8 2224 clr R2
06FA 20920100 sts L124,R2
06FE .dbline 486
06FE ; return;
06FE 1CC0 xjmp L122
0700 L153:
0700 .dbline 488
0700 ; }else
0700 ; {
0700 .dbline 489
0700 ; lock_open[lock_umn]=command;
0700 80E0 ldi R24,<_lock_open
0702 90E0 ldi R25,>_lock_open
0704 E0910400 lds R30,_lock_umn
0708 FF27 clr R31
070A E80F add R30,R24
070C F91F adc R31,R25
070E 20900500 lds R2,_command
0712 2082 std z+0,R2
0714 .dbline 490
0714 ; lock_flag[lock_umn]=0xaa;
0714 80E0 ldi R24,<_lock_flag
0716 90E0 ldi R25,>_lock_flag
0718 E0910400 lds R30,_lock_umn
071C FF27 clr R31
071E E80F add R30,R24
0720 F91F adc R31,R25
0722 8AEA ldi R24,170
0724 8083 std z+0,R24
0726 .dbline 491
0726 ; lock_umn=0;
0726 2224 clr R2
0728 20920400 sts _lock_umn,R2
072C .dbline 492
072C ; command=0;
072C 20920500 sts _command,R2
0730 .dbline 493
0730 ; pc_ia =0;
0730 20920100 sts L124,R2
0734 .dbline 494
0734 ; pc_ic=0;
0734 20920000 sts L123,R2
0738 .dbline 495
0738 ; }
0738 .dbline 496
0738 ; break;
0738 L125:
0738 L126:
0738 .dbline -2
0738 L122:
0738 .dbline 0 ; func end
0738 2990 ld R2,y+
073A 2FBE OUT 63,R2
073C F991 ld R31,y+
073E E991 ld R30,y+
0740 A991 ld R26,y+
0742 9991 ld R25,y+
0744 8991 ld R24,y+
0746 3991 ld R19,y+
0748 2991 ld R18,y+
074A 0991 ld R16,y+
074C 2990 ld R2,y+
074E 1895 reti
0750 .dbsym r pc_udr 16 c
0750 .dbend
.area bss(ram, con, rel)
0002 .dbfile E:\工作文件\18门锁板红外检测\程序\lock_m6418d.c
0002 _time::
0002 .blkb 1
0003 .dbsym e time _time c
0003 _tim::
0003 .blkb 1
0004 .dbsym e tim _tim c
0004 _lock_umn:
0004 .blkb 1
0005 .dbsym s lock_umn _lock_umn c
0005 _command:
0005 .blkb 1
0006 .dbsym s command _command c
0006 _machine_addr:
0006 .blkb 1
0007 .dbsym s machine_addr _machine_addr c
0007 ; }
0007 ; }
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。