📄 sd8060.lst
字号:
(0590) p_buf->Length = count + 2;
(0591) p_buf->Data[0] = (unsigned char)Record.BottomPoint; //回应包号
(0592) point = OFFSET_EVENT_RECORD + Record.BottomPoint * sizeof(struct StructOfRecord);
(0593) MemoryRead((unsigned char *)&p_buf->Data[1],point,count);
(0594) b_rts = 1; //置发送请求标志
(0595) }
(0596) else CommandReply(RESP_NULL); //无记录数据
(0597) }
(0598) else if(TEST) CommandReply(RESP_INVALID_DATA); //包长度异常
(0599) }
(0600)
(0601) */
(0602) }
(0603) //------------------------------------------------------------------------------
(0604) //------------------------------------------------------------------------------
(0605) void communication_with_pc(void)
(0606) {
(0607) struct StructOfProtocol *p_buf;
(0608) struct data *communication;
(0609) p_buf = (struct StructOfProtocol *)Buffer485;
4F2 E749 LDI R20,0x79
4F3 E051 LDI R21,1
(0610) if(communication->pc_txd)
4F4 01FB MOVW R30,R22
4F5 8021 LDD R2,Z+1
4F6 2022 TST R2
4F7 F041 BEQ 0x0500
(0611) {//发送数据给PC
(0612) communication->pc_txd = 0;
4F8 2422 CLR R2
4F9 8221 STD Z+1,R2
(0613) p_buf->Address = Device_Address;
4FA 9020 0077 LDS R2,Device_Address
4FC 01FA MOVW R30,R20
4FD 8220 STD Z+0,R2
(0614) UDR = BOOT_CODE;
4FE EF8E LDI R24,0xFE
4FF B98C OUT 0x0C,R24
(0615) }
(0616) if(communication->pc_rxd)
500 01FB MOVW R30,R22
501 8020 LDD R2,Z+0
502 2022 TST R2
503 F409 BNE 0x0505
504 C0A2 RJMP 0x05A7
(0617) {//pc发送给采集板的数据
(0618) communication->pc_rxd = 0;
505 2422 CLR R2
506 8220 STD Z+0,R2
(0619) if((p_buf->Address==Device_Address)||(p_buf->Address == 0xff))
507 01FA MOVW R30,R20
508 8020 LDD R2,Z+0
509 2433 CLR R3
50A 0121 MOVW R4,R2
50B 9020 0077 LDS R2,Device_Address
50D 1442 CP R4,R2
50E F021 BEQ 0x0513
50F 2D84 MOV R24,R4
510 3F8F CPI R24,0xFF
511 F009 BEQ 0x0513
512 C094 RJMP 0x05A7
(0620) {
(0621) switch(p_buf->Command)
513 01FA MOVW R30,R20
514 8143 LDD R20,Z+3
515 2755 CLR R21
516 314F CPI R20,0x1F
517 E0E0 LDI R30,0
518 075E CPC R21,R30
519 F409 BNE 0x051B
51A C081 RJMP 0x059C
51B 3242 CPI R20,0x22
51C E0E0 LDI R30,0
51D 075E CPC R21,R30
51E F409 BNE 0x0520
51F C066 RJMP 0x0586
520 3243 CPI R20,0x23
521 E0E0 LDI R30,0
522 075E CPC R21,R30
523 F409 BNE 0x0525
524 C075 RJMP 0x059A
525 3244 CPI R20,0x24
526 E0E0 LDI R30,0
527 075E CPC R21,R30
528 F409 BNE 0x052A
529 C060 RJMP 0x058A
52A 3245 CPI R20,0x25
52B E0E0 LDI R30,0
52C 075E CPC R21,R30
52D F409 BNE 0x052F
52E C05F RJMP 0x058E
52F 3246 CPI R20,0x26
530 E0E0 LDI R30,0
531 075E CPC R21,R30
532 F409 BNE 0x0534
533 C05E RJMP 0x0592
534 E286 LDI R24,0x26
535 E090 LDI R25,0
536 1784 CP R24,R20
537 0795 CPC R25,R21
538 F40C BGE 0x053A
539 C02E RJMP 0x0568
53A 3041 CPI R20,1
53B E0E0 LDI R30,0
53C 075E CPC R21,R30
53D F409 BNE 0x053F
53E C043 RJMP 0x0582
53F 3042 CPI R20,2
540 E0E0 LDI R30,0
541 075E CPC R21,R30
542 F409 BNE 0x0544
543 C040 RJMP 0x0584
544 3043 CPI R20,3
545 E0E0 LDI R30,0
546 075E CPC R21,R30
547 F409 BNE 0x0549
548 C04F RJMP 0x0598
549 3044 CPI R20,4
54A E0E0 LDI R30,0
54B 075E CPC R21,R30
54C F409 BNE 0x054E
54D C03A RJMP 0x0588
54E 3045 CPI R20,5
54F E0E0 LDI R30,0
550 075E CPC R21,R30
551 F409 BNE 0x0553
552 C039 RJMP 0x058C
553 3046 CPI R20,6
554 E0E0 LDI R30,0
555 075E CPC R21,R30
556 F409 BNE 0x0558
557 C038 RJMP 0x0590
558 304D CPI R20,0xD
559 E0E0 LDI R30,0
55A 075E CPC R21,R30
55B F409 BNE 0x055D
55C C037 RJMP 0x0594
55D 3041 CPI R20,1
55E E0E0 LDI R30,0
55F 075E CPC R21,R30
560 F40C BGE 0x0562
561 C044 RJMP 0x05A6
562 3141 CPI R20,0x11
563 E0E0 LDI R30,0
564 075E CPC R21,R30
565 F409 BNE 0x0567
566 C03D RJMP 0x05A4
567 C03E RJMP 0x05A6
568 334F CPI R20,0x3F
569 E0E0 LDI R30,0
56A 075E CPC R21,R30
56B F409 BNE 0x056D
56C C031 RJMP 0x059E
56D 3440 CPI R20,0x40
56E E0E0 LDI R30,0
56F 075E CPC R21,R30
570 F409 BNE 0x0572
571 C02E RJMP 0x05A0
572 E480 LDI R24,0x40
573 E090 LDI R25,0
574 1784 CP R24,R20
575 0795 CPC R25,R21
576 F02C BLT 0x057C
577 324D CPI R20,0x2D
578 E0E0 LDI R30,0
579 075E CPC R21,R30
57A F0D9 BEQ 0x0596
57B C02A RJMP 0x05A6
57C 3640 CPI R20,0x60
57D E0E0 LDI R30,0
57E 075E CPC R21,R30
57F F409 BNE 0x0581
580 C021 RJMP 0x05A2
581 C024 RJMP 0x05A6
(0622) {
(0623) case CMD_GET_DCUID://取控制器名称和版本号
(0624) GET_NAME();
582 DBE0 RCALL _GET_NAME
(0625) break;
583 C023 RJMP 0x05A7
(0626) case CMD_GET_TIME://取系统时间
(0627) GET_TIME();
584 DC05 RCALL _GET_TIME
(0628) break;
585 C021 RJMP 0x05A7
(0629) case CMD_SET_TIME://下载系统时间
(0630) SET_TIME();
586 DC1B RCALL _SET_TIME
(0631) break;
587 C01F RJMP 0x05A7
(0632) case CMD_GET_CARDSET://取系统卡注册表
(0633) GET_CARDSET();
588 DC45 RCALL _GET_CARDSET
(0634) break;
589 C01D RJMP 0x05A7
(0635) case CMD_SET_CARDSET://下载系统卡注册表
(0636) SET_CARDSET();
58A DC8D RCALL _SET_CARDSET
(0637) break;
58B C01B RJMP 0x05A7
(0638) case CMD_GET_USER://取用户楼层授权资料
(0639) GET_USER();
58C DCD4 RCALL _GET_USER
(0640) break;
58D C019 RJMP 0x05A7
(0641) case CMD_SET_USER://下载门禁时间组(设用户楼层授权资料)
(0642) SET_USER();
58E DD1C RCALL _SET_USER
(0643) break;
58F C017 RJMP 0x05A7
(0644) case CMD_GET_USER_TIME://取用户时间组授权资料
(0645) GET_USER_TIME();
590 DD63 RCALL _GET_USER_TIME
(0646) break;
591 C015 RJMP 0x05A7
(0647) case CMD_SET_USER_TIME://设用户时间组授权资料
(0648) SET_USER_TIME();
592 DDAB RCALL _SET_USER_TIME
(0649) break;
593 C013 RJMP 0x05A7
(0650) case CMD_GET_AUTH_TIME://取电梯授权时间组
(0651) GET_AUTH_TIME();
594 DDF2 RCALL _GET_AUTH_TIME
(0652) break;
595 C011 RJMP 0x05A7
(0653) case CMD_SET_AUTH_TIME://设电梯授权时间组
(0654) SET_AUTH_TIME();
596 DE39 RCALL _SET_AUTH_TIME
(0655) break;
597 C00F RJMP 0x05A7
(0656) case CMD_GET_CONFIG://取系统配置参数
(0657) GET_CONFIG();
598 DE80 RCALL _GET_CONFIG
(0658) break;
599 C00D RJMP 0x05A7
(0659) case CMD_SET_CONFIG: //设置系统配置参数
(0660) SET_CONFIG();
59A DEAB RCALL _SET_CONFIG
(0661) break;
59B C00B RJMP 0x05A7
(0662) case CMD_GET_PRODUCT_CODE://取产品标签代码
(0663) GET_PRODUCT_CODE();
59C DED7 RCALL _GET_PRODUCT_CODE
(0664) break;
59D C009 RJMP 0x05A7
(0665) case CMD_SET_PRODUCT_CODE://设置产品标签代码
(0666) SET_PRODUCT_CODE();
59E DF02 RCALL _SET_PRODUCT_CODE
(0667) break;
59F C007 RJMP 0x05A7
(0668) case CTL_GET_UNIT_STATUS: /*取控制器状态*/
(0669) GET_UNIT_STATUS();
5A0 DF2E RCALL _GET_UNIT_STATUS
(0670) break;
5A1 C005 RJMP 0x05A7
(0671) case CTL_SET_UNIT_STATUS: /*设置控制器状态*/
(0672) SET_UNIT_STATUS();
5A2 DF4B RCALL _SET_UNIT_STATUS
(0673) break;
5A3 C003 RJMP 0x05A7
(0674) case CMD_GET_EVENT://取控制器历史事件
(0675) GET_EVENT();
5A4 DF4A RCALL _GET_EVENT
(0676) break;
5A5 C001 RJMP 0x05A7
(0677) default:
(0678) if (TEST && p_buf->Address != 0xff)
5A6 C000 RJMP 0x05A7
(0679) CommandReply(RESP_INVALID_INSTRUCT);
(0680) break;
(0681) }
(0682) }
(0683) }
5A7 940C 0DAA JMP pop_xgsetF000
FILE: C:\DOCUME~1\Administrator\桌面\LCU904~1\固件程序\AT24C.c
(0001)
(0002) #include"include.h"
(0003)
(0004) #define AT24CWAIT 1
(0005) #define AT24_DEVICEADDR 0xA0
(0006)
(0007) #define SCL_HI() PORTB |= (1<<1)
(0008) #define SCL_LO() PORTB &= ~(1<<1)
(0009)
(0010) #define SDA_HI() PORTB |= (1<<0)
(0011) #define SDA_LO() PORTB &= ~(1<<0)
(0012) #define SDA_OUTPUT() DDRB |= (1<<0)
(0013) #define SDA_INPUT() DDRB &= ~(1<<0)
(0014) #define SDAIN() (PINB&(1<<0))
(0015)
(0016) void AT24C_delay(unsigned char us)
(0017) {
(0018) do{
(0019) asm("nop");
_AT24C_delay:
us --> R16
5A9 0000 NOP
(0020) asm("nop");
5AA 0000 NOP
(0021) }while(us--);
5AB 2E20 MOV R2,R16
5AC 2433 CLR R3
5AD 5001 SUBI R16,1
5AE 2022 TST R2
5AF F7C9 BNE 0x05A9
5B0 9508 RET
(0022) }
(0023)
(0024) //打开I2C
(0025) void I2C_Initial(void)
(0026) {
(0027) DDRB |= (1<<1);//
_I2C_Initial:
5B1 9AB9 SBI 0x17,1
(0028) DDRB |= (1<<0); //
5B2 9AB8 SBI 0x17,0
(0029)
(0030) SCL_HI();//SCL
5B3 9AC1 SBI 0x18,1
(0031) SDA_HI();//SDA
5B4 9AC0 SBI 0x18,0
5B5 9508 RET
(0032) }
(0033)
(0034) //关闭I2C
(0035) void I2C_Close(void)
(0036) {
(0037) SCL_HI();//SCL
_I2C_Close:
5B6 9AC1 SBI 0x18,1
(0038) SDA_HI();//SDA
5B7 9AC0 SBI 0x18,0
(0039)
(0040) DDRB |= (1<<1);//
5B8 9AB9 SBI 0x17,1
(0041) DDRB |= (1<<0); //
5B9 9AB8 SBI 0x17,0
5BA 9508 RET
(0042) }
(0043)
(0044) /*发送起动信号*/
(0045) void I2C_SendStart(void)
(0046) {
(0047) SCL_HI();
_I2C_SendStart:
5BB 9AC1 SBI 0x18,1
(0048) SDA_HI();
5BC 9AC0 SBI 0x18,0
(0049) AT24C_delay(AT24CWAIT);
5BD E001 LDI R16,1
5BE DFEA RCALL _AT24C_delay
(0050) SDA_LO();
5BF 98C0 CBI 0x18,0
(0051) AT24C_delay(AT24CWAIT);
5C0 E001 LDI R16,1
5C1 DFE7 RCALL _AT24C_delay
(0052) SCL_LO();
5C2 98C1 CBI 0x18,1
5C3 9508 RET
(0053) }
(0054)
(0055) /*发送停止信号*/
(0056) void I2C_SendStop(void)
(0057) {
(0058) SDA_LO();
_I2C_SendStop:
5C4 98C0 CBI 0x18,0
(0059) SCL_HI();
5C5 9AC1 SBI 0x18,1
(0060) AT24C_delay(AT24CWAIT);
5C6 E001 LDI R16,1
5C7 DFE1 RCALL _AT24C_delay
(0061) SDA_HI();
5C8 9AC0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -