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

📄 sd8060.lst

📁 电梯楼层采集器代码
💻 LST
📖 第 1 页 / 共 5 页
字号:
(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 + -