| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611 |
- C51 COMPILER V9.53.0.0 MAIN 09/30/2018 11:45:29 PAGE 1
- C51 COMPILER V9.53.0.0, COMPILATION OF MODULE MAIN
- OBJECT MODULE PLACED IN .\Output\Main.obj
- COMPILER INVOKED BY: D:\Keil_v5\C51\BIN\C51.EXE ..\..\Code\User\Main.c LARGE OPTIMIZE(0,SPEED) BROWSE INCDIR(../../Code/
- -Include;../../Code/User;../../Code/User/Common;../../Code/User/Driver) DEFINE(FOSC_160000=1) DEBUG OBJECTEXTEND PRINT(.\
- -Output\LST\Main.lst) TABS(2) OBJECT(.\Output\Main.obj)
- line level source
- 1 /******************************************************************************/
- 2 /* -- 居加居-- */
- 3 /*
- 4 // 文件名:
- 5 // 说明:
- 6 // 编写人员:kinve
- 7 // 编写日期:2018-8-21
- 8 // 程序维护:
- 9 // 维护记录:
- 10 //
- 11 //
- 12 */
- 13 // 免责声明:
- 14 // (c) Anxinke Corporation. All rights reserved.
- 15 /******************************************************************************/
- 16 #include <string.h>
- 17 #include "Common.h"
- 18 #include "Delay.h"
- 19 #include "Timer.h"
- 20 #include "Interrupt.h"
- 21 #include "Flash.h"
- 22 #include "Version.h"
- 23 #include "Packdata.h"
- 24 #include "DHT11.h"
- 25 #include "Keys.h"
- 26
- 27 #define USE_2401_API
- 28 #ifdef USE_2401_API
- 29 #include "nRF24L01_API.h"
- 30 #else
- #include "NRF24L01_inte.H"
- #define TX_PLOAD_WIDTH NRF24L01_TX_PLOAD_LEN
- #define RX_PLOAD_WIDTH NRF24L01_TX_PLOAD_LEN
- #endif
- 35 unsigned char P12_Led_state = 0;
- 36 unsigned char P04_Delay_state = 0;
- 37 unsigned char Sys_Type = SysRun_Norm;
- 38
- 39 //********************************************************************************************************
- -***
- 40 // Application: SPI Function
- 41 // Master send 0x90 and recevie 0x4E
- 42 // Master send 0x01 and recevie 0x55
- 43 // Master send 0x02 and recevie 0x56
- 44 // Master send 0x03 and recevie 0x4F
- 45 // Master send 0x04 and recevie 0x54
- 46 //
- 47 // Master recevie 0x4E and 0x4F form slave after transmitting
- 48 //********************************************************************************************************
- -***
- 49
- 50 //--------------------------------------------------------------------------------------------------------
- ----
- C51 COMPILER V9.53.0.0 MAIN 09/30/2018 11:45:29 PAGE 2
- 51 void SPI_Error ( void )
- 52 {
- 53 1 DBG ( "\nSPI error.\n" );
- 54 1
- 55 1 while ( 1 ) // SPI error and P0.7 flash/
- 56 1 {
- 57 2 P07 = 1;
- 58 2 Timer0_Delay1ms ( 500 );
- 59 2 P07 = 0;
- 60 2 Timer0_Delay1ms ( 500 );
- 61 2 }
- 62 1 }
- 63
- 64 //--------------------------------------------------------------------------------------------------------
- ----
- 65 void SPI_Initial ( void )
- 66 {
- 67 1 clr_SPIEN; //禁止SPI
- 68 1 P15_Quasi_Mode; // P15 (SS) Quasi mode
- 69 1 P10_Quasi_Mode; // P10(SPCLK) Quasi mode
- 70 1 P00_Quasi_Mode; // P00 (MOSI) Quasi mode
- 71 1 P01_Quasi_Mode; // P22 (MISO) Quasi mode
- 72 1
- 73 1 //SS仅在从机有效
- 74 1 set_DISMODF; // 1 = 禁止模式错误检测. SS的特征依赖SSOE 位
- 75 1 clr_SSOE; // SS 作为 0.普通IO 1.自动拉低
- 76 1
- 77 1 clr_LSBFE; // 0.MSB first
- 78 1
- 79 1 clr_CPOL; // 0.SPI空闲时SCL为低
- 80 1 clr_CPHA; // 0.在第1个边沿采样
- 81 1
- 82 1 set_MSTR; // 主设备
- 83 1 //SPICLK_DIV16; // Select SPI clock=1Mhz
- 84 1 SPICLK_DIV4; // 16/4=4Mhz, 24l01速度不能太快,最大的数据传输率为 10Mbps
- 85 1 set_SPIEN; // 使能SPI
- 86 1 clr_SPIF; // 清标志位
- 87 1 }
- 88 //--------------------------------------------------------------------------------------------------------
- ----
- 89 void Start_Sending_SPI ( uint8 *pu8MID, uint8 *pu8DID )
- 90 {
- 91 1 SS = 0;
- 92 1
- 93 1 SPDR = 0x90;
- 94 1 Timer3_Delay10us ( 1 ); // Send 0x90 to Slave
- 95 1
- 96 1 while ( ! ( SPSR & SET_BIT7 ) );
- 97 1
- 98 1 clr_SPIF;
- 99 1
- 100 1 if ( SPDR != 0x4E )
- 101 1 SPI_Error();
- 102 1
- 103 1 DBG ( "\nSlave Return %c!\n", SPDR );
- 104 1
- 105 1 SPDR = 0x01; // Send 0x01 to Slave
- 106 1 Timer3_Delay10us ( 1 );
- 107 1
- 108 1 while ( ! ( SPSR & SET_BIT7 ) );
- 109 1
- 110 1 clr_SPIF;
- C51 COMPILER V9.53.0.0 MAIN 09/30/2018 11:45:29 PAGE 3
- 111 1
- 112 1 if ( SPDR != 0x55 )
- 113 1 SPI_Error();
- 114 1
- 115 1 DBG ( "\nSlave Return %c!\n", SPDR );
- 116 1
- 117 1 SPDR = 0x02; // Send 0x02 to Slave
- 118 1 Timer3_Delay10us ( 1 );
- 119 1
- 120 1 while ( ! ( SPSR & SET_BIT7 ) );
- 121 1
- 122 1 clr_SPIF;
- 123 1
- 124 1 if ( SPDR != 0x56 )
- 125 1 SPI_Error();
- 126 1
- 127 1 DBG ( "\nSlave Return %c!\n", SPDR );
- 128 1
- 129 1 SPDR = 0x03; // Send 0x03 to Slave
- 130 1 Timer3_Delay10us ( 1 );
- 131 1
- 132 1 while ( ! ( SPSR & SET_BIT7 ) );
- 133 1
- 134 1 clr_SPIF;
- 135 1
- 136 1 if ( SPDR != 0x4F )
- 137 1 SPI_Error();
- 138 1
- 139 1 DBG ( "\nSlave Return %c!\n", SPDR );
- 140 1
- 141 1 SPDR = 0x04; // Send 0x04 to Slave
- 142 1 Timer3_Delay10us ( 1 );
- 143 1
- 144 1 while ( ! ( SPSR & SET_BIT7 ) );
- 145 1
- 146 1 clr_SPIF;
- 147 1
- 148 1 if ( SPDR != 0x54 )
- 149 1 SPI_Error();
- 150 1
- 151 1 DBG ( "\nSlave Return %c!\n", SPDR );
- 152 1
- 153 1 SPDR = 0xFF;
- 154 1 Timer3_Delay10us ( 1 );
- 155 1
- 156 1 while ( ! ( SPSR & SET_BIT7 ) );
- 157 1
- 158 1 clr_SPIF;
- 159 1 *pu8MID = SPDR; // Receive Slave 1st DATA from Slave
- 160 1 DBG ( "\nSlave Return %c!\n", SPDR );
- 161 1
- 162 1 SPDR = 0xFF;
- 163 1 Timer3_Delay10us ( 1 );
- 164 1
- 165 1 while ( ! ( SPSR & SET_BIT7 ) );
- 166 1
- 167 1 clr_SPIF;
- 168 1 *pu8DID = SPDR; // Receive Slave 2nd DATA from Slave
- 169 1 DBG ( "\nSlave Return %c!\n", SPDR );
- 170 1
- 171 1 SS = 1;
- 172 1 }
- C51 COMPILER V9.53.0.0 MAIN 09/30/2018 11:45:29 PAGE 4
- 173
- 174 //1.关闭POR (TA 保护) 上电复位(检测电源上升到系统可以工作的电压)
- 175 #ifdef N76E003_IAR
- __sfr __no_init volatile unsigned char PORDIS @ 0XFD;
- #else
- 178 sfr PORDIS = 0XFD;
- 179 #endif
- 180 void CLOSE_POR ( void )
- 181 {
- 182 1 TA = 0XAA;
- 183 1 TA = 0X55;
- 184 1 PORDIS = 0X5A;
- 185 1 TA = 0XAA;
- 186 1 TA = 0X55;
- 187 1 PORDIS = 0XA5;
- 188 1 }
- 189
- 190 /******************************************************************************
- 191 This code illustrates how to do APROM and CONFIG IAP from LDROM.
- 192 APROM are re-programmed by the code to output P1 as 55h and P0 as aah.
- 193 The CONFIG2 is also updated to disable BOD reset.
- 194 User needs to configure CONFIG0 = 0x7F, CONFIG1 = 0xFE, CONFIG2 = 0xFF.
- 195 ******************************************************************************/
- 196 //2.关闭BOD 欠压检测 (监测运行期间VDD电平)
- 197 #ifdef N76E003_IAR
- __sfr __no_init volatile unsigned char BODCON0 @ 0XA3;
- __sfr __no_init volatile unsigned char BODCON1 @ 0XAB;
- //__sfr __no_init volatile unsigned char CONFIG2 @ 0XFD;
- #else
- 202 //sfr BODCON0 = 0XA3;
- 203 //sfr BODCON1 = 0XAB;
- 204 #endif
- 205 void CLOSE_BOD ( void )
- 206 {
- 207 1 BODCON0 &= ~ ( 1 << 7 ); //0 =禁用欠压检测电路
- 208 1 }
- 209
- 210 enum
- 211 {
- 212 UMKNOW_RESET,
- 213 POWER_ON_RESET, //上电复位
- 214 BROWN_OUT_RESET, //欠压复位
- 215 RST_PIN_RESET, //RST引脚复位
- 216 HARD_FAULT_RESET, //硬件故障复位
- 217 WATCHGOD_TIMER_RESET, //看门狗定时器复位
- 218 SOFTWARE_RESET, //软件复位
- 219 MAX_RESET
- 220 };
- 221 /*
- 222 RST pin reset
- 223 Brown-out reset
- 224 Software reset
- 225 Power-on reset
- 226 Watchgod Timer reset
- 227 Hard Fault reset
- 228 */
- 229 unsigned char Reset_Reason ( void )
- 230 {
- 231 1 unsigned char res = UMKNOW_RESET;
- 232 1
- 233 1 if ( PCON & ( 1 << 4 ) )
- 234 1 {
- C51 COMPILER V9.53.0.0 MAIN 09/30/2018 11:45:29 PAGE 5
- 235 2 PCON &= ~ ( 1 << 4 );
- 236 2 res = POWER_ON_RESET;
- 237 2 }
- 238 1
- 239 1 if ( BODCON0 & ( 1 << 1 ) )
- 240 1 {
- 241 2 BODCON0 &= ~ ( 1 << 1 );
- 242 2 res = BROWN_OUT_RESET;
- 243 2 }
- 244 1
- 245 1 if ( AUXR1 & ( 1 << 6 ) )
- 246 1 {
- 247 2 AUXR1 &= ~ ( 1 << 6 );
- 248 2 res = RST_PIN_RESET;
- 249 2 }
- 250 1
- 251 1 if ( AUXR1 & ( 1 << 5 ) )
- 252 1 {
- 253 2 AUXR1 &= ~ ( 1 << 5 );
- 254 2 res = HARD_FAULT_RESET;
- 255 2 }
- 256 1
- 257 1 if ( WDCON & ( 1 << 3 ) )
- 258 1 {
- 259 2 WDCON &= ~ ( 1 << 3 );
- 260 2 res = WATCHGOD_TIMER_RESET;
- 261 2 }
- 262 1
- 263 1 if ( AUXR1 & ( 1 << 7 ) )
- 264 1 {
- 265 2 AUXR1 &= ~ ( 1 << 7 );
- 266 2 res = SOFTWARE_RESET;
- 267 2 }
- 268 1
- 269 1 return res;
- 270 1 }
- 271
- 272
- 273 void ResetSys ( void )
- 274 {
- 275 1 AUXR1 &= ~ ( 1 << 7 ); //software reset flag clear
- 276 1 EA = 0;
- 277 1 TA = 0xAA;
- 278 1 TA = 0x55;
- 279 1 CHPCON |= ( 1 << 7 ); //software reset
- 280 1 }
- 281
- 282 void P12_Flash ( unsigned char num )
- 283 {
- 284 1 unsigned char i;
- 285 1
- 286 1 for ( i = 0; i < num && num < 5 ; i++ )
- 287 1 {
- 288 2 P12 = 1;
- 289 2 Timer3_Delay100ms ( 1 );
- 290 2 P12 = 0;
- 291 2 Timer3_Delay100ms ( 1 );
- 292 2 }
- 293 1
- 294 1 P12_Led_state = P12;
- 295 1 }
- 296 #if 0
- C51 COMPILER V9.53.0.0 MAIN 09/30/2018 11:45:29 PAGE 6
- unsigned char flag;
- //NRF24L01中断处理
- #ifdef N76E003_IAR
- #pragma vector=0x3B
- __interrupt void NRF24L01_Handler ( void )
- #else
- void NRF24L01_Handler ( void ) interrupt 7 //interrupt address is 0x001B
- #endif
- {
- clr_EPI; //关闭管脚中断7
-
- flag = PIF;
- PIF = 0x00; //清除全部标志
-
- DBG ( "\nNRF24L01 interrupt!\n" );
- set_EPI; //开启管脚中断7
- }
-
- void NRF24L01_Interrupt_P03 ( void )
- {
- //P0M1|=SET_BIT3;P0M2&=~SET_BIT3; //input
- PICON &= ~ ( SET_BIT0 | SET_BIT1 );
- PICON |= ( 0x00 ); //[1:0]=0.端口0
- PICON |= SET_BIT5; //通道3=1.边沿触发
- PINEN |= SET_BIT3; // 1 = 低电平/ 下降沿触发中断
- PIPEN &= ~SET_BIT3; //0 = 关闭中断(高电平/ 上升沿触发中断)
- EIE |= SET_BIT1; //管脚中断,最多8个,中断号7
- EA = 1; //总中断
- }
- #endif
- 327 //96位 UID与128位UCID
- 328 unsigned char xdata UIDBuf[12]; //本机的存储96bit的UID内容
- 329 unsigned char xdata UID_Master[12]; //主机的存储96bit的UID内容
- 330 UINT8 UID_BYTE ( UINT8 Addr )
- 331 {
- 332 1 UINT8 DATATEMP;
- 333 1 set_IAPEN;
- 334 1 IAPAL = Addr;
- 335 1 IAPAH = 0x00;
- 336 1 IAPCN = READ_UID;
- 337 1 set_IAPGO;
- 338 1 DATATEMP = IAPFD;
- 339 1 clr_IAPEN;
- 340 1 return DATATEMP;
- 341 1 }
- 342
- 343 //读出芯片的96bit的UID
- 344 void ReadUID_UCID ( UINT8 UID, UINT8 *out )
- 345 {
- 346 1 UINT8 i;
- 347 1
- 348 1 for ( i = 0; i < 12; i++ )
- 349 1 {
- 350 2 out[i] = UID_BYTE ( i + UID ); //ucid=0x20
- 351 2 }
- 352 1 }
- 353
- 354
- 355 //最长4byte
- 356 #define GET_VER_POS(NUM,VER) ((VER>>(8*NUM))&0xff)
- 357 //--------------------------------------------------------------------------------------------------------
- ----
- C51 COMPILER V9.53.0.0 MAIN 09/30/2018 11:45:29 PAGE 7
- 358 void main ( void )
- 359 {
- 360 1 unsigned char reset_num, i;
- 361 1 //unsigned char datatemp[8];
- 362 1 unsigned char TxBuf[TX_PLOAD_WIDTH] = {'>', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0'}; //
- 363 1 unsigned char RxBuf[RX_PLOAD_WIDTH] = {0};
- 364 1 unsigned char PackBuf[TX_PLOAD_WIDTH];
- 365 1 pDataBuff CheckRxBuf = {0};
- 366 1 unsigned char CheckUID = 0;
- 367 1 //uint8 u8MID, u8DID;
- 368 1 reset_num = Reset_Reason();
- 369 1
- 370 1 CLOSE_POR();
- 371 1 CLOSE_BOD();
- 372 1
- 373 1 Set_All_GPIO_Quasi_Mode;
- 374 1
- 375 1
- 376 1 //NRF24L01_Interrupt_P03();
- 377 1 //定时器
- 378 1 Timer0_init ( TIMER_SCAN ); //1ms
- 379 1
- 380 1 //ResetSys();
- 381 1 InitialUART0_Timer1 ( 115200 ); /* 115200 Baud Rate*/
- 382 1 Timer3_Delay10us ( 1000 );
- 383 1 DBG ( "\nHome Light %s, Build by Kinve in %ld\n", THIS_VER, CUSTOM_VER );
- 384 1
- 385 1 ReadUID_UCID ( 0x00, UIDBuf ); //0x00=uid 0x20=ucid
- 386 1 DBG ( "UID=%x%x%x%x\n", UIDBuf[0], UIDBuf[1], UIDBuf[2], UIDBuf[3] );
- 387 1
- 388 1 #if 0
- //call read byte
- datatemp[5] = Read_APROM_BYTE ( 0x3885 );
-
- if ( datatemp[5] != 0x4A )
- {
- //call write byte
- for ( i = 0; i < sizeof ( datatemp ); i++ )
- {
- if ( i == 5 ) Write_DATAFLASH_BYTE ( 0x3880 + i, 0x4A );
- else Write_DATAFLASH_BYTE ( 0x3880 + i, GET_VER_POS ( i, CUSTOM_VER ) );
-
- datatemp[i] = Read_APROM_BYTE ( ( UINT16 code * ) ( 0x3880 + i ) );
- }
- }
- #endif
- 404 1 for ( i = 0; i < sizeof ( UID_Master ); i++ )
- 405 1 {
- 406 2 UID_Master[i] = Read_APROM_BYTE ( ( UINT16 code * ) ( 0x3881 + i ) );
- 407 2 }
- 408 1
- 409 1 Timer3_Delay100ms(1);
- 410 1 if(Keys[KEY_CS].Res == ONE_HITS_KEY_FLAG)
- 411 1 {
- 412 2 Keys[KEY_CS].Res = NO_KEY_FLAG;
- 413 2 Sys_Type = SysRun_Test;
- 414 2 }
- 415 1
- 416 1 SPI_Initial();
- 417 1
- 418 1 NRF24L01_Wait_Check(); // 等待检测到NRF24L01,程序才会向下执行
- 419 1 NRF24L01_RT_Init ();
- C51 COMPILER V9.53.0.0 MAIN 09/30/2018 11:45:29 PAGE 8
- 420 1 DBG ( "NRF24L01 init OK!\n" );
- 421 1
- 422 1 while ( 1 )
- 423 1 {
- 424 2 switch(Sys_Type)
- 425 2 {
- 426 3 case SysRun_Test:
- 427 3 if ( System_Flag_200Ms)
- 428 3 {
- 429 4 System_Flag_200Ms = 0;
- 430 4 P12_Led_state = !P12_Led_state;
- 431 4 P12 = P12_Led_state;
- 432 4 }
- 433 3
- 434 3 if(Keys[KEY_CS].Res == ONE_HITS_KEY_FLAG) //配对发
- 435 3 {
- 436 4 Keys[KEY_CS].Res = NO_KEY_FLAG;
- 437 4 memset(TxBuf, 0, sizeof(TxBuf));
- 438 4 TxBuf[0] = '*'; //*(1byte)+?(1byte)
- 439 4 TxBuf[1] = '?';
- 440 4 PackData(TxBuf, 2, PackBuf);
- 441 4 SEND_BUF ( PackBuf, sizeof(PackBuf) );
- 442 4 DBG ( "Send: %s\n", &PackBuf[2] );
- 443 4 }
- 444 3
- 445 3 if(Keys[KEY_CS].Res == LONG_KEY_FLAG) //配对删除
- 446 3 {
- 447 4 Keys[KEY_CS].Res = NO_KEY_FLAG;
- 448 4 //保存到flash
- 449 4 memset(UID_Master, 0xFF, sizeof(UID_Master));
- 450 4 Write_DATAFLASH_BYTE ( 0x3880, 0xFF );
- 451 4 for ( i = 0; i < sizeof ( UID_Master ); i++ )
- 452 4 {
- 453 5 Write_DATAFLASH_BYTE ( 0x3881 + i, UID_Master[i] );
- 454 5 }
- 455 4 }
- 456 3 break;
- 457 3 case SysRun_Norm:
- 458 3 default:
- 459 3 if ( System_Flag_1s )
- 460 3 {
- 461 4 System_Flag_1s = 0;
- 462 4 P12_Led_state = !P12_Led_state;
- 463 4 P12 = P12_Led_state;
- 464 4
- 465 4 //温湿度获取
- 466 4 if(DHT11_Read_Data( &DHT11_Data )){
- 467 5 DBG ( "%02d%% - %02dC\n", DHT11_Data.humi_int, DHT11_Data.temp_int );
- 468 5 }
- 469 4 }
- 470 3
- 471 3 if(Keys[KEY_CS].Res == ONE_HITS_KEY_FLAG)//配对发
- 472 3 {
- 473 4 Keys[KEY_CS].Res = NO_KEY_FLAG;
- 474 4 memset(TxBuf, 0, sizeof(TxBuf));
- 475 4 TxBuf[0] = '>'; //*(1byte)+?(1byte)
- 476 4 TxBuf[1] = 'L'; //灯
- 477 4 TxBuf[2] = 'T'; //翻转
- 478 4 memcpy(&TxBuf[3], UID_Master, 12);
- 479 4 PackData(TxBuf, 15, PackBuf);
- 480 4 SEND_BUF ( PackBuf, sizeof(PackBuf) );
- 481 4 DBG ( "Send: %s\n", &PackBuf[2] );
- C51 COMPILER V9.53.0.0 MAIN 09/30/2018 11:45:29 PAGE 9
- 482 4 }
- 483 3 break;
- 484 3 }
- 485 2
- 486 2
- 487 2 if ( NRF_IRQ == 0 )
- 488 2 {
- 489 3 if ( NRF24L01_RxPacket ( RxBuf, sizeof ( RxBuf ) ) )
- 490 3 {
- 491 4 if(CheckData(RxBuf, RX_PLOAD_WIDTH, &CheckRxBuf)){
- 492 5 P12_Flash ( 2 );
- 493 5 DBG ( "Recv: %s\n", &(CheckRxBuf.Data[2]) );
- 494 5 switch(CheckRxBuf.Data[2]){
- 495 6 case '*': //配对
- 496 6 switch(CheckRxBuf.Data[3]){
- 497 7 case '?':
- 498 7 memset(TxBuf, 0, sizeof(TxBuf));
- 499 7 TxBuf[0] = '*'; //*(1byte)+Y(1byte)+uid(12byte)
- 500 7 TxBuf[1] = '1';
- 501 7 memcpy(&TxBuf[2], UIDBuf, 12);
- 502 7 PackData(TxBuf, 14, PackBuf);
- 503 7 SEND_BUF ( PackBuf, sizeof(PackBuf) );
- 504 7 DBG ( "Send: %s\n", &PackBuf[2] );
- 505 7 break;
- 506 7 case '1':
- 507 7 memcpy(UID_Master, &CheckRxBuf.Data[4], 12);
- 508 7 //保存到flash
- 509 7 Write_DATAFLASH_BYTE ( 0x3880, 0x4A );
- 510 7 for ( i = 0; i < sizeof ( UID_Master ); i++ )
- 511 7 {
- 512 8 Write_DATAFLASH_BYTE ( 0x3881 + i, UID_Master[i] );
- 513 8 }
- 514 7 //返回成功
- 515 7 memset(TxBuf, 0, sizeof(TxBuf));
- 516 7 TxBuf[0] = '*'; //*(1byte)+Y(1byte)+uid(10byte)
- 517 7 TxBuf[1] = '2';
- 518 7 PackData(TxBuf, 2, PackBuf);
- 519 7 SEND_BUF ( PackBuf, sizeof(PackBuf) );
- 520 7 DBG ( "Send: %s\n", &PackBuf[2] );
- 521 7 break;
- 522 7 case '2':
- 523 7
- 524 7 break;
- 525 7 }
- 526 6 break;
- 527 6 case '>': //数据
- 528 6 switch(CheckRxBuf.Data[3]){
- 529 7 case 'L':
- 530 7 if(CheckRxBuf.Data[4] == 'T'){
- 531 8 CheckUID = 0;
- 532 8 if(0 == memcmp(&(CheckRxBuf.Data[5]), UIDBuf, 12)){
- 533 9 P04_Delay_state = !P04_Delay_state;
- 534 9 P04 = P04_Delay_state;
- 535 9 CheckUID = 1;
- 536 9 }
- 537 8 //返回成功
- 538 8 memset(TxBuf, 0, sizeof(TxBuf));
- 539 8 TxBuf[0] = '>'; //*(1byte)+Y(1byte)+uid(10byte)
- 540 8 TxBuf[1] = 'L';
- 541 8 TxBuf[2] = 'T';
- 542 8 TxBuf[3] = CheckUID?'N':'Y';
- 543 8 PackData(TxBuf, 4, PackBuf);
- C51 COMPILER V9.53.0.0 MAIN 09/30/2018 11:45:29 PAGE 10
- 544 8 SEND_BUF ( PackBuf, sizeof(PackBuf) );
- 545 8 DBG ( "Send: %s\n", &PackBuf[2] );
- 546 8 }
- 547 7 break;
- 548 7 }
- 549 6 break;
- 550 6 }
- 551 5 }
- 552 4 }
- 553 3 }
- 554 2
- 555 2 }
- 556 1 }
- 557 //--------------------------------------------------------------------------------------------------------
- ----
- 558
- 559
- 560
- 561
- MODULE INFORMATION: STATIC OVERLAYABLE
- CODE SIZE = 2739 ----
- CONSTANT SIZE = 214 ----
- XDATA SIZE = 147 ----
- PDATA SIZE = ---- ----
- DATA SIZE = ---- ----
- IDATA SIZE = ---- ----
- BIT SIZE = ---- ----
- END OF MODULE INFORMATION.
- C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
|