- //#include "stc11.h"
- #include<STC12C5A60S2.H>
- #include <intrins.h>
- #define RELOAD_COUNT 0xfd //22.1184MHz,12T,SMOD=0,9600bps
- //////////////////////////////////////
- #define led (1<<0)//p20
- #define wt588_mosi (1<<1)//p31
- #define wt588_sck (1<<3)//p33
- #define wt588_rst (1<<6)//p16
- #define wt588_cs (1<<5)//p15
- #define wt588_busy (1<<7)//p17
- #define yy_num(x) (x)
- #define yy_num_asc(x) (x-0x30)
- #define yy_asc(x) (x-0x41+15)
- #define yy_cphz(x) (x+41)
- #define yy_10 10
- #define yy_100 11
- #define yy_1000 12
- #define yy_10000 13
- #define yy_dot 14
- #define yy_cphz0 41
- #define yy_cpyao 135
- #define yy_yuan 99
- #define yy_jiao 100
- #define yy_year 153
- #define yy_month 170
- #define yy_day 101
- #define yy_hour 137
- #define yy_minute 138
- #define yy_tian 131
- #define total_cmd 64
- #define FOSC 11059200L //System frequency
- #define BAUD 9600 //UART baudrate
- #define T1MS (65536-FOSC/1000) //1T模式
- //sfr WDT_CONTR=0xe1;
- unsigned char au_rk=102,au_ck=104;//定義入口語(102/103)和出口語(104/105)
- sbit BUSY=P3^3;
- sbit RST=P3^2;
- sbit CS=P3^5;
- sbit SCL=P3^6;
- sbit SDA=P3^4;
- sbit LED=P1^7;
- sbit XW2=P2^7;
- sbit XW1=P2^6;
- sbit DG=P2^5;
- sbit CLOSE=P2^4;
- sbit OPEN=P2^3;
- //sbit S2=P1^3;
- //sbit S3=P1^4;
- //sbit S4=P1^7;
- unsigned char code zm[26]={0x41,0x42,0x43,0x44,0x45,0x46,0x47,0x48,0x49,0x4a,0x4b,0x4c,0x4d,0x4f,0x4e,0x50,0x51,0x52,0x53,0x54,0x55,0x56,0x57,0x58,0x59,0x5a};
- //A B C D E F G H I J K L M N O P Q R S T U U W X Y Z
- unsigned char code DIG[10]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39};
- //unsigned int code sheng_n[31]={0xBEA9,0xBDF2,0xBBA6,0xD3E5,0xBCBD,0xBDFA,0xC3C9,0xC1C9,0xBCAA,0xBADA,0xCBD5,0xD5E3,0xCDEE,0xC3F6,0xB8D3,0xC2B3,0xD4A5,0xB6F5,0xCFE6,0xD4C1,0xB9F0,0xC7ED,0xB4A8,0xB9F3,0xD4C6,0xB2D8,0xC9C2,0xB8CA,0xC7E0,0xC4FE,0xD0C2};
- /*京 津 滬 渝 冀 晉 蒙 遼 吉 黑 蘇 浙 皖 閩 贛 魯 豫 鄂 湘 粵 桂 瓊 川 貴 云 藏 陜 甘 青 寧 新*/
- //unsigned int code sheng_n[31]={0xBEA9,0xBDF2,0xBBA6,0xD3E5,0xBCBD,0xBDFA,0xC3C9,0xC1C9,0xBCAA,0xBADA,0xCBD5,0xD5E3,0xCDEE,0xC3F6,0xB8D3,0xC2B3,0xD4A5,0xB6F5,0xCFE6,0xD4C1,0xB9F0,0xC7ED,0xB4A8,0xB9F3,0xD4C6,0xB2D8,0xC9C2,0xB8CA,0xC7E0,0xC4FE,0xD0C2};
- unsigned int code sheng_n[31]={0xBEA9,0xBDF2,0xBCBD,0xBDFA,0xC3C9,0xC1C9,0xBCAA,0xBADA,0xBBA6,0xCBD5,0xD5E3,0xCDEE,0xC3F6,0xB8D3,0xC2B3,0xD4A5,0xB6F5,0xCFE6,0xD4C1,0xB9F0,0xC7ED,0xD3E5,0xB4A8,0xB9F3,0xD4C6,0xB2D8,0xC9C2,0xB8CA,0xC7E0,0xC4FE,0xD0C2};
- /*41京 津 冀 晉 蒙 遼 吉 黑 滬 蘇 浙 皖 閩 贛 魯 豫 鄂 湘 粵 貴 瓊 渝 川 桂 云 藏 陜 甘 青 寧 新
- 72 75 7986甲乙丙午未申庚巳辛壬寅戊辰
- */
- unsigned int day,hour,minute;//定義全局變量,為了減少參數(shù)傳遞數(shù)量,因為堆棧太淺
- unsigned char segno,segs[32];
- unsigned char card[3];
- unsigned char data rx_bz,ii,mm,tx_bz,DGZT;
- unsigned char data rx_buf[26],dg[4];
- unsigned char data rx_buf1[38];
- unsigned char data rx_count,Addr,rx1_bz,rx_bz1,rx_count1;
- unsigned int data jsq_dg,jsq_m,jsq_k,jsq_p;
- unsigned int count;
- unsigned char timeH,timeM,timeS;
- unsigned char ic_bz;
- void do_cmd();
- void delay1ms(unsigned int k);
- void delay100us(void) ;
- void delay1ms(unsigned int k) //1MS延時子程序
- {
- unsigned int i,j;
- for(i=k;i>0;i--)
- { for(j=2667;j>0;j--);}
- }
- void delay100us(void) //100US延時子程序
- {
- unsigned char j;
- for(j=150;j>0;j--);
- }
- unsigned char sb_dig(unsigned char dd1,unsigned char dd2 ,unsigned char dd3,unsigned char dd4)
- {
- unsigned char hz_count;
- if((dd1==0x00) && (dd2==0x00)&&(dd3==0x00) ) { hz_count=1; dg[0]=dd4;}
- if((dd1==0x00) && (dd2==0x00)&&(dd3>0x00)&&(dd3<0x0a) ) { hz_count=2; dg[0]=dd3;dg[1]=dd4;}
- if((dd1==0x00) && (dd2>0x00)&&(dd2<0x0a)) { hz_count=3; dg[0]=dd2;dg[1]=dd3;dg[2]=dd4;}
- if((dd1>0x00)&&(dd1<0x0a)) {hz_count=4; dg[0]=dd1;dg[1]=dd2;dg[2]=dd3;dg[3]=dd4;}
- return(hz_count);
- }
- unsigned char sb_dig_1(unsigned char dd1,unsigned char dd2 ,unsigned char dd3,unsigned char dd4,unsigned char dd5)
- {
- unsigned char hz_count;
- if((dd1==0x00) && (dd2==0x00)&&(dd3==0x00)&&(dd4==0x00) ) { hz_count=1; dg[0]=dd5;}
- if((dd1==0x00) && (dd2==0x00)&&(dd3==0x00)&&(dd4>0x00)&&(dd4<0x0a) ) { hz_count=2; dg[0]=dd4;dg[1]=dd5;}
- if((dd1==0x00) && (dd2==0x00)&&(dd3>0x00)&&(dd3<0x0a)) { hz_count=3; dg[0]=dd3;dg[1]=dd4;dg[2]=dd5;}
- if((dd1==0x00)&&(dd2>0x00)&&(dd2<0x0a)) {hz_count=4; dg[0]=dd2;dg[1]=dd3;dg[2]=dd4;dg[3]=dd5;}
- if((dd1>0x00)&&(dd1<0x0a)) {hz_count=5; dg[0]=dd1;dg[1]=dd2;dg[2]=dd3;dg[3]=dd4;dg[4]=dd5;}
- return(hz_count);
- }
- unsigned char read_sb(unsigned char len, unsigned char *d,unsigned char lend)
- { unsigned char ll;
- unsigned char g[7];
- // k=sb_dig(s[0],s[1],s[2],s[3]); ///1 2 3 4
- switch(len)
- {case 1: ////個位
- g[0]=dg[0];
- ll=1;
- break;
- case 2: ////十位
- if(dg[1]==0) ///個位為0
- {
- g[0]=dg[0];
- g[1]=10;
- ll=2;
- }
- else ////個位不為0
- { g[0]=dg[0];
- g[1]=10;
- g[2]=dg[1];
- ll=3;
- }
- break;
- case 3:
- if((dg[1]==0)&&(dg[2]==0)) ///個、十位為0
- { g[0]=dg[0];
- g[1]=11;
- ll=2;
- }
- if((dg[1]!=0)&&(dg[2]==0)) ///個位為0
- { g[0]=dg[0];
- g[1]=11;
- g[2]=dg[1];
- g[3]=10;
- ll=4;
- }
- if((dg[1]==0)&&(dg[2]!=0)) ///十位為0
- { g[0]=dg[0];
- g[1]=11;
- g[2]=0;
- g[3]=dg[2];
- ll=4;
- }
- if((dg[1]!=0)&&(dg[2]!=0)) ///十ge位為0
- { g[0]=dg[0];
- g[1]=11;
- g[2]=dg[1];
- g[3]=10;
- g[4]=dg[2];
- ll=5;
- }
- break;
- case 4:
- if((dg[1]==0)&&(dg[2]==0)&&(dg[3]==0)) ///個、十 百位為0
- {
- g[0]=dg[0];
- g[1]=12;
- ll=2;
- }
- if((dg[1]==0)&&(dg[2]==0)&&(dg[3]!=0)) ///十 百位為0
- {
- g[0]=dg[0];
- g[1]=12;
- g[2]=0;
- g[3]=dg[3];
- ll=4;
- }
- if((dg[1]==0)&&(dg[2]!=0)&&(dg[3]==0)) ///個 百位為0
- {
- g[0]=dg[0];
- g[1]=12;
- g[2]=0;
- g[3]=dg[2];
- g[4]=10;
- ll=5;
- }
- if((dg[1]!=0)&&(dg[2]==0)&&(dg[3]==0)) ///個 十位為0
- {
- g[0]=dg[0];
- g[1]=12;
- g[2]=dg[1];
- g[3]=11;
- ll=4;
- }
- if((dg[1]!=0)&&(dg[2]!=0)&&(dg[3]==0)) ///個 位為0
- {
- g[0]=dg[0];
- g[1]=12;
- g[2]=dg[1];
- g[3]=11;
- g[4]=dg[2];
- g[5]=10;
- ll=6;
- }
- if((dg[1]!=0)&&(dg[2]==0)&&(dg[3]!=0)) ///十 位為0
- {
- g[0]=dg[0];
- g[1]=12;
- g[2]=dg[1];
- g[3]=11;
- g[4]=0;
- g[5]=dg[3];
- ll=6;
- }
- if((dg[1]==0)&&(dg[2]!=0)&&(dg[3]!=0)) ///百 位為0
- {
- g[0]=dg[0];
- g[1]=12;
- g[2]=0;
- g[3]=dg[2];
- g[4]=10;
- g[5]=dg[3];
- ll=6;
- }
- if((dg[1]!=0)&&(dg[2]!=0)&&(dg[3]!=0)) ///全不為0
- {
- g[0]=dg[0];
- g[1]=12;
- g[2]=dg[1];
- g[3]=11;
- g[4]=dg[2];
- g[5]=10;
- g[6]=dg[3];
- ll=7;
- }
- break;
- }
- switch(ll)
- {
- case 1:
- lend =1;
- d[0]=g[0];
- break;
- case 2:
- lend=2;
- d[0]=g[0];
- d[1]=g[1];
- break;
- case 3:
- lend=3;
- d[0]=g[0];
- d[1]=g[1];
- d[2]=g[2];
- break;
- case 4:
- lend=4;
- d[0]=g[0];
- d[1]=g[1];
- d[2]=g[2];
- d[3]=g[3];
- break;
- case 5:
- lend=5;
- d[0]=g[0];
- d[1]=g[1];
- d[2]=g[2];
- d[3]=g[3];
- d[4]=g[4];
- break;
- case 6:
- lend=6;
- d[0]=g[0];
- d[1]=g[1];
- d[2]=g[2];
- d[3]=g[3];
- d[4]=g[4];
- d[5]=g[5];
- break;
- case 7:
- lend=7;
- d[0]=g[0];
- d[1]=g[1];
- d[2]=g[2];
- d[3]=g[3];
- d[4]=g[4];
- d[5]=g[5];
- d[6]=g[6];
- break;
- }
- return ll;
- }
- //////////////
- unsigned char read_sb1(unsigned char len, unsigned char *d,unsigned char lend)
- { unsigned char ll;
- unsigned char g[10];
- // k=sb_dig(s[0],s[1],s[2],s[3]); ///1 2 3 4
- switch(len)
- {case 1: ////個位
- g[0]=dg[0];
- ll=1;
- break;
- case 2: ////十位
- if(dg[1]==0) ///個位為0
- {
- g[0]=dg[0];
- g[1]=10;
- ll=2;
- }
- else ////個位不為0
- { g[0]=dg[0];
- g[1]=10;
- g[2]=dg[1];
- ll=3;
- }
- break;
- case 3:
- if((dg[1]==0)&&(dg[2]==0)) ///個、十位為0
- { g[0]=dg[0];
- g[1]=11;
- ll=2;
- }
- if((dg[1]!=0)&&(dg[2]==0)) ///個位為0
- { g[0]=dg[0];
- g[1]=11;
- g[2]=dg[1];
- g[3]=10;
- ll=4;
- }
- if((dg[1]==0)&&(dg[2]!=0)) ///十位為0
- { g[0]=dg[0];
- g[1]=11;
- g[2]=0;
- g[3]=dg[2];
- ll=4;
- }
- if((dg[1]!=0)&&(dg[2]!=0)) ///十ge位為0
- { g[0]=dg[0];
- g[1]=11;
- g[2]=dg[1];
- g[3]=10;
- g[4]=dg[2];
- ll=5;
- }
- break;
- case 4:
- if((dg[1]==0)&&(dg[2]==0)&&(dg[3]==0)) ///個、十 百位為0
- {
- g[0]=dg[0];
- g[1]=12;
- ll=2;
- }
- if((dg[1]==0)&&(dg[2]==0)&&(dg[3]!=0)) ///十 百位為0
- {
- g[0]=dg[0];
- g[1]=12;
- g[2]=0;
- g[3]=dg[3];
- ll=4;
- }
- if((dg[1]==0)&&(dg[2]!=0)&&(dg[3]==0)) ///個 百位為0
- {
- g[0]=dg[0];
- g[1]=12;
- g[2]=0;
- g[3]=dg[2];
- g[4]=10;
- ll=5;
- }
- if((dg[1]!=0)&&(dg[2]==0)&&(dg[3]==0)) ///個 十位為0
- {
- g[0]=dg[0];
- g[1]=12;
- g[2]=dg[1];
- g[3]=11;
- ll=4;
- }
- if((dg[1]!=0)&&(dg[2]!=0)&&(dg[3]==0)) ///個 位為0
- {
- g[0]=dg[0];
- g[1]=12;
- g[2]=dg[1];
- g[3]=11;
- g[4]=dg[2];
- g[5]=10;
- ll=6;
- }
- if((dg[1]!=0)&&(dg[2]==0)&&(dg[3]!=0)) ///十 位為0
- {
- g[0]=dg[0];
- g[1]=12;
- g[2]=dg[1];
- g[3]=11;
- g[4]=0;
- g[5]=dg[3];
- ll=6;
- }
- if((dg[1]==0)&&(dg[2]!=0)&&(dg[3]!=0)) ///百 位為0
- {
- g[0]=dg[0];
- g[1]=12;
- g[2]=0;
- g[3]=dg[2];
- g[4]=10;
- g[5]=dg[3];
- ll=6;
- }
- if((dg[1]!=0)&&(dg[2]!=0)&&(dg[3]!=0)) ///全不為0
- {
- g[0]=dg[0];
- g[1]=12;
- g[2]=dg[1];
- g[3]=11;
- g[4]=dg[2];
- g[5]=10;
- g[6]=dg[3];
- ll=7;
- }
- break;
- case 5:
- if((dg[1]==0)&&(dg[2]==0)&&(dg[3]==0)&&(dg[4]==0)) ///個、十 百 千位為0
- {
- g[0]=dg[0];
- g[1]=13;
- ll=2;
- }
- if((dg[1]==0)&&(dg[2]==0)&&(dg[3]==0)&&(dg[4]!=0)) ///十 百 千位為0
- {
- g[0]=dg[0];
- g[1]=13;
- g[2]=0;
- g[3]=dg[4];
- ll=4;
- }
- if((dg[1]==0)&&(dg[2]==0)&&(dg[3]!=0)&&(dg[4]==0)) ///個 十 千位為0
- {
- g[0]=dg[0];
- g[1]=13;
- g[2]=0;
- g[3]=dg[3];
- g[4]=10;
- ll=5;
- }
- if((dg[1]==0)&&(dg[2]!=0)&&(dg[3]==0)&&(dg[4]==0)) ///個 百 千位為0
- {
- g[0]=dg[0];
- g[1]=13;
- g[2]=0;
- g[3]=dg[2];
- g[4]=11;
- ll=5;
- }
- if((dg[1]!=0)&&(dg[2]==0)&&(dg[3]==0)&&(dg[4]==0)) ///十 百 千位為0
- {
- g[0]=dg[0];
- g[1]=13;
- g[2]=dg[1];
- g[3]=12;
- ll=4;
- }
- if((dg[1]==0)&&(dg[2]==0)&&(dg[3]!=0)&&(dg[4]!=0)) ///十 百 千位為0
- {
- g[0]=dg[0];
- g[1]=13;
- g[2]=0;
- g[3]=dg[3];
- g[4]=10;
- g[5]=dg[4];
- ll=6;
- }
- if((dg[1]==0)&&(dg[2]!=0)&&(dg[3]==0)&&(dg[4]!=0)) ///十 百 千位為0
- {
- g[0]=dg[0];
- g[1]=13;
- g[2]=0;
- g[3]=dg[2];
- g[4]=11;
- g[5]=0;
- g[6]=dg[4];
- ll=7;
- }
- if((dg[1]!=0)&&(dg[2]==0)&&(dg[3]==0)&&(dg[4]!=0)) ///十 百 千位為0
- {
- g[0]=dg[0];
- g[1]=13;
- g[2]=dg[1];
- g[3]=12;
- g[4]=0;
- g[5]=dg[4];
- ll=6;
- }
- if((dg[1]==0)&&(dg[2]!=0)&&(dg[3]!=0)&&(dg[4]==0)) ///十 百 千位為0
- {
- g[0]=dg[0];
- g[1]=13;
- g[2]=0;
- g[3]=dg[2];
- g[4]=11;
- g[5]=dg[3];
- g[6]=10;
- ll=7;
- }
- if((dg[1]!=0)&&(dg[2]==0)&&(dg[3]!=0)&&(dg[4]==0)) ///十 百 千位為0
- {
- g[0]=dg[0];
- g[1]=13;
- g[2]=dg[1];
- g[3]=12;
- g[4]=0;
- g[5]=dg[3];
- g[6]=10;
- ll=7;
- }
- if((dg[1]!=0)&&(dg[2]!=0)&&(dg[3]==0)&&(dg[4]==0)) ///十 百 千位為0
- {
- g[0]=dg[0];
- g[1]=13;
- g[2]=dg[1];
- g[3]=12;
- g[4]=dg[2];
- g[5]=11;
- ll=6;
- }
- if((dg[1]==0)&&(dg[2]!=0)&&(dg[3]!=0)&&(dg[4]!=0)) ///十 百 千位為0
- {
- g[0]=dg[0];
- g[1]=13;
- g[2]=0;
- g[3]=dg[2];
- g[4]=11;
- g[5]=dg[3];
- g[6]=10;
- g[7]=dg[4];
- ll=8;
- }
- if((dg[1]!=0)&&(dg[2]!=0)&&(dg[3]!=0)&&(dg[4]==0)) ///十 百 千位為0
- {
- g[0]=dg[0];
- g[1]=13;
- g[2]=dg[1];
- g[3]=12;
- g[4]=dg[2];
- g[5]=11;
- g[6]=dg[4];
- g[7]=10;
- ll=8;
- }
- if((dg[1]!=0)&&(dg[2]!=0)&&(dg[3]==0)&&(dg[4]!=0)) ///十 百 千位為0
- {
- g[0]=dg[0];
- g[1]=13;
- g[2]=dg[1];
- g[3]=12;
- g[4]=dg[2];
- g[5]=11;
- g[6]=0;
- g[7]=dg[4];
- ll=8;
- }
- if((dg[1]!=0)&&(dg[2]==0)&&(dg[3]!=0)&&(dg[4]!=0)) ///十 百 千位為0
- {
- g[0]=dg[0];
- g[1]=13;
- g[2]=dg[1];
- g[3]=12;
- g[4]=0;
- g[5]=dg[3];
- g[6]=10;
- g[7]=dg[4];
- ll=8;
- }
- if((dg[1]!=0)&&(dg[2]!=0)&&(dg[3]!=0)&&(dg[4]!=0)) ///十 百 千位為0
- {
- g[0]=dg[0];
- g[1]=13;
- g[2]=dg[1];
- g[3]=12;
- g[4]=dg[2];
- g[5]=11;
- g[6]=dg[3];
- g[7]=10;
- g[8]=dg[4];
- ll=9;
-
- }
- break;
- }
- switch(ll)
- {
- case 1:
- lend =1;
- d[0]=g[0];
- break;
- case 2:
- lend=2;
- d[0]=g[0];
- d[1]=g[1];
- break;
- case 3:
- lend=3;
- d[0]=g[0];
- d[1]=g[1];
- d[2]=g[2];
- break;
- case 4:
- lend=4;
- d[0]=g[0];
- d[1]=g[1];
- d[2]=g[2];
- d[3]=g[3];
- break;
- case 5:
- lend=5;
- d[0]=g[0];
- d[1]=g[1];
- d[2]=g[2];
- d[3]=g[3];
- d[4]=g[4];
- break;
- case 6:
- lend=6;
- d[0]=g[0];
- d[1]=g[1];
- d[2]=g[2];
- d[3]=g[3];
- d[4]=g[4];
- d[5]=g[5];
- break;
- case 7:
- lend=7;
- d[0]=g[0];
- d[1]=g[1];
- d[2]=g[2];
- d[3]=g[3];
- d[4]=g[4];
- d[5]=g[5];
- d[6]=g[6];
- break;
- case 8:
- lend=8;
- d[0]=g[0];
- d[1]=g[1];
- d[2]=g[2];
- d[3]=g[3];
- d[4]=g[4];
- d[5]=g[5];
- d[6]=g[6];
- d[7]=g[7];
- break;
- case 9:
- lend=9;
- d[0]=g[0];
- d[1]=g[1];
- d[2]=g[2];
- d[3]=g[3];
- d[4]=g[4];
- d[5]=g[5];
- d[6]=g[6];
- d[7]=g[7];
- d[8]=g[8];
- break;
- }
- return ll;
- }
- void play(unsigned char addr) //三線發(fā)碼子程序
- {
- unsigned char i,m;
- LED=0;
- do{} while(BUSY==1);
- delay1ms(19); /* 17ms*/
- CS=0;
- LED=1;
- delay1ms(5);
- m=addr;
- for(i=0;i<8;i++)
- {SCL=0;
- SDA=(m & 0x01);
- m=m>>1;
- delay100us();
- delay100us();
- SCL=1;
- delay100us();
- delay100us();
- }
- CS=1;
- LED=0;
- do{} while(BUSY==1);
- delay1ms(4); /* 17ms*/
- }
- void serial_port_one_initial()
- {
- // SCON = 0x50; //8-bit variable UART
- // TMOD = 0x20; //Set Timer1 as 8-bit auto reload mode
- // TMOD = 0x20; //Set Timer1 as 8-bit auto reload mode
- // TH1 = TL1 = -(FOSC/12/32/BAUD); //Set auto-reload vaule
- // TR1 = 1; //Timer1 start run
- // ES = 1; //Enable UART interrupt
- // EA = 1; //Open master interrupt switch
- SCON = 0x50; //0101,0000 8位可變波特率,無奇偶校驗位
- BRT = RELOAD_COUNT;
- AUXR = 0x11; // T0x12,T1x12,UART_M0x6,BRTR,S2SMOD,BRTx12,EXTRAM,S1BRS
- ES=1; //允許串口中斷
- EA=1; //開總中斷
- }
- void serial_port_two_initial()
- {
- AUXR &= 0xF7; //波特率不倍速
- S2CON = 0x50; //8位數(shù)據(jù),可變波特率
- AUXR &= 0xFB; //獨立波特率發(fā)生器時鐘為Fosc/12,即12T
- BRT = 0xFD; //設定獨立波特率發(fā)生器重裝值
- AUXR |= 0x10; //啟動獨立波特率發(fā)生器
- IE2 = 0x01; //允許串口2中斷,ES2=1
- EA=1; //開總中斷
- }
- void send_UART_one(unsigned char i)
- {
- ES = 0; //關串口中斷
- TI = 0; //清零串口發(fā)送完成中斷請求標志
- SBUF = i;
- while(TI ==0); //等待發(fā)送完成
- TI = 0; //清零串口發(fā)送完成中斷請求標志
- // delay1ms(1);
- ES = 1; //允許串口中斷
- }
- void send_UART_two(unsigned char i)
- {
- IE2 = 0x00; //關串口2中斷,es2=0
- // while(busy); //清零串口發(fā)送完成中斷請求標志
- // busy=1;
- S2BUF = i; //等待發(fā)送完成 //清零串口發(fā)送完成中斷請求標志
- delay1ms(1);
- IE2 = 0x01; //允許串口2中斷,ES2=1
-
- }
- /*
- unsigned int cal_crc(unsigned char *ptr,unsigned char len)
- {
- unsigned char i;
- unsigned int crc;
- crc=0;
- while(len--!=0)
- {
- for(i=0x80;i!=0;i/=2)
- {if((crc&0x8000)!=0){crc*=2;crc^=0x1021;}
- else crc*=2;
- if((*ptr&i)!=0) crc^=0x1021;
- }
- ptr++;
- }
- return(crc);
- }
- */
- /*取得整數(shù)的語音段代碼*/
- /*
- unsigned char cm_dec(unsigned int n)
- {
- unsigned char kt=0,is0=0,i=0;
- unsigned int d10=10000;
- unsigned char*s;
- s=&segs[segno];
- if(n>59999) n=59999;
- while(n)
- {
- if(n/d10)
- {
- kt=1;
- is0=0;
- s[i++]=yy_num(n/d10);
- switch(d10){
- case 10000:
- s[i++]=yy_10000;
- break;
- case 1000:
- s[i++]=yy_1000;
- break;
- case 100:
- s[i++]=yy_100;
- break;
- case 10:
- s[i++]=yy_10;
- break;
- }
- }
- else if(kt==1)
- {
- if(is0==0)
- {
- s[i++]=yy_num(0);
- is0=1;
- }
- }
- n=n%d10;
- d10=d10/10;
- }
- return i;
- }
- */
- /*組合xxx元*/
- /*
- unsigned char cm_n_yuan(unsigned int n)
- {
- unsigned char i;
- unsigned char*s;
- s=&segs[segno];
- i=cm_dec(n);
- if(n==0)
- {
- s[i++]=yy_num(0);
- }
- s[i]=yy_yuan;
- s[i+1]=0;
- return i+1;
- } */
- /*組合xxx日*/
- /*
- unsigned char cm_n_day(unsigned int n)
- {
- unsigned char i;
- unsigned char*s;
- s=&segs[segno];
- i=cm_dec(n);
- if(n==0)
- {
- s[i++]=yy_num(0);
- }
- s[i]=yy_day;
- s[i+1]=0;
- return i+1;
- }
- */
- /*組合xxx天xxx小時xxx分*/
- /*
- unsigned char cm_n_time()
- {
- if(day) {segno+=cm_dec(day);segs[segno++]=yy_tian;}
- if(hour) {segno+=cm_dec(hour);segs[segno++]=yy_hour;}
- if(minute) {segno+=cm_dec(minute);segs[segno++]=yy_minute;}
- if(day==0&&hour==0&&minute==0)
- {
- segs[segno++]=yy_num(0);
- segs[segno++]=yy_minute;
- }
- return 0;
- }
- */
- /*組合車牌,如粵A12345*/
- /*
- unsigned char cm_cp(unsigned char *cp)
- {
- unsigned char i=0;
- unsigned char*s;
- s=&segs[segno];
- s[i++]=yy_cphz(*cp);
- for(;i<7;i++)
- {
- if(cp[i]>=0x30&&cp[i]<=0x39)
- s[i]=yy_num_asc(cp[i]);
- else if(cp[i]>=0x41&&cp[i]<=0x5a)
- s[i]=yy_asc(cp[i]);
- else
- s[i]=0;
- }
- return 7;
- }
- */
- /*
- void do_cmd(void)
- {
- unsigned int n;
- segno=0;
- switch(RxBuf[4])
- {
- case 0x70:
- delay4bytes(10);
- if(RxBuf[7]==RxBuf[8]&&RxBuf[5]==0xff&&RxBuf[6]==0xff)
- {
- segs[segno++]=150;
- segno+=cm_dec(RxBuf[7]);
- segs[segno++]=134;
- }
- else if(RxBuf[5]==RxBuf[6]&&RxBuf[7]==0xff&&RxBuf[8]==0xff)
- {
- segs[segno++]=149;
- segno+=cm_dec(RxBuf[5]);
- segs[segno++]=134;
- }
- break;
- case 0x41://cmd_no:0x41
- break;
- case 0x42://cmd_no:0x42
- segs[segno++]=au_rk;
- break;
- case 0x43://cmd_no:0x43
- delay4bytes(9);
- segs[segno++]=au_rk;segs[segno++]=106;
- n=(RxBuf[5]-0x30)*1000+(RxBuf[6]-0x30)*100+(RxBuf[7]-0x30)*10+(RxBuf[8]-0x30);
- segno+=cm_n_day(n);
- break;
- case 0x44://cmd_no:0x44
- delay4bytes(9);
- segs[segno++]=au_rk;segs[segno++]=148;
- n=(RxBuf[5]&0x0f)*4096+(RxBuf[6]&0x0f)*256+(RxBuf[7]&0x0f)*16+(RxBuf[8]&0x0f);
- segno+=cm_n_yuan(n);
- break;
- case 0x45://cmd_no:0x45
- segs[segno++]=107;
- break;
- case 0x46://cmd_no:0x46
- segs[segno++]=108;
- break;
- case 0x47://cmd_no:0x47
- segs[segno++]=yy_num(2);segs[segno++]=yy_num(0);segs[segno++]=yy_num(1);segs[segno++]=yy_num(1);
- segs[segno++]=yy_num(1);segs[segno++]=yy_num(1);segs[segno++]=yy_num(0);segs[segno++]=yy_num(1);
- break;
- case 0x48://cmd_no:0x48
- segs[segno++]=109;
- break;
- case 0x49://cmd_no:0x49
- delay4bytes(13);
- segs[segno++]=au_ck;segs[segno++]=114;
- n=(RxBuf[9]&0x0f)*4096+(RxBuf[10]&0x0f)*256+(RxBuf[11]&0x0f)*16+(RxBuf[12]&0x0f);
- segno+=cm_n_yuan(n);
- segs[segno++]=147;
- n=(RxBuf[5]&0x0f)*4096+(RxBuf[6]&0x0f)*256+(RxBuf[7]&0x0f)*16+(RxBuf[8]&0x0f);
- segno+=cm_n_yuan(n);
- break;
- case 0x4a://cmd_no:0x4a
- delay4bytes(9);
- segs[segno++]=115;
- n=(RxBuf[5]&0x0f)*4096+(RxBuf[6]&0x0f)*256+(RxBuf[7]&0x0f)*16+(RxBuf[8]&0x0f);
- segno+=cm_n_yuan(n);
- segs[segno++]=116;
- break;
- case 0x4b://cmd_no:0x4b
- delay4bytes(9);
- segs[segno++]=au_ck;segs[segno++]=106;
- n=(RxBuf[5]-0x30)*1000+(RxBuf[6]-0x30)*100+(RxBuf[7]-0x30)*10+(RxBuf[8]-0x30);
- segno+=cm_n_day(n);
- break;
- case 0x4c://cmd_no:0x4c
- segs[segno++]=110;
- break;
- case 0x4d://cmd_no:0x4d
- segs[segno++]=117;
- break;
- case 0x4e://cmd_no:0x4e
- segs[segno++]=118;
- break;
- case 0x4f://cmd_no:0x4f
- segs[segno++]=119;
- break;
- case 0x50://cmd_no:0x50
- segs[segno++]=113;
- break;
- case 0x51://cmd_no:0x51
- segs[segno++]=112;
- break;
- case 0x52://cmd_no:0x52
- segs[segno++]=120;
- break;
- case 0x53://cmd_no:0x53
- segs[segno++]=121;
- break;
- case 0x54://cmd_no:0x54
- segs[segno++]=122;
- break;
- case 0x55://cmd_no:0x55
- segs[segno++]=au_ck;
- break;
- case 0x56://cmd_no:0x56
- segs[segno++]=123;
- break;
- case 0x57://cmd_no:0x57
- segs[segno++]=111;
- break;
- case 0x58://cmd_no:0x58
- segs[segno++]=124;
- break;
- case 0x60://cmd_no:0x60
- break;
- case 0x61://cmd_no:0x61
- break;
- case 0x62://cmd_no:0x62
- //au_segs[segno++]=112;
- break;
- case 0x63://cmd_no:0x63
- delay4bytes(10);
- segs[segno++]=103;
- break;
- case 0x64://cmd_no:0x64
- delay4bytes(10);
- segs[segno++]=115;
- n=(RxBuf[5]&0x0f)*4096+(RxBuf[6]&0x0f)*256+(RxBuf[7]&0x0f)*16+(RxBuf[8]&0x0f);
- segno+=cm_n_yuan(n);
- segs[segno++]=116;
- break;
- case 0x65://cmd_no:0x65
- delay4bytes(10);
- segs[segno++]=au_rk;
- n=(RxBuf[5]-0x30)*1000+(RxBuf[6]-0x30)*100+(RxBuf[7]-0x30)*10+(RxBuf[8]-0x30);
- if(n<=0x270f)
- {
- segs[segno++]=106;
- segno+=cm_n_day(n);
- }
- break;
- case 0x66://cmd_no:0x66
- delay4bytes(10);
- segs[segno++]=au_ck;
- n=(RxBuf[5]-0x30)*1000+(RxBuf[6]-0x30)*100+(RxBuf[7]-0x30)*10+(RxBuf[8]-0x30);
- if(n<=0x270f)
- {
- segs[segno++]=106;
- segno+=cm_n_day(n);
- }
- break;
- case 0x68://cmd_no:0x68
- delay4bytes(25);
- segs[segno++]=151;
- segno+=cm_cp(&RxBuf[17]);
- segs[segno++]=152;
- break;
- case 0x69://cmd_no:0x69
- delay4bytes(25);
- segno+=cm_cp(&RxBuf[17]);
- segs[segno++]=136;//停車
- //xx天xx小時xx分
- day=RxBuf[13]*256+RxBuf[14];
- hour=RxBuf[15];
- minute=(RxBuf[16]>>4)*10+(RxBuf[16]&0x0f);
- cm_n_time();
- segs[segno++]=115;//請交
- //xxxx元
- n=(RxBuf[5]&0x0f)*4096+(RxBuf[6]&0x0f)*256+(RxBuf[7]&0x0f)*16+(RxBuf[8]&0x0f);
- segno+=cm_n_yuan(n);
- break;
- case 0x6a://cmd_no:0x6a
- delay4bytes(25);
- if(RxBuf[5]==0xff&&RxBuf[6]==0xff&&RxBuf[7]==0xff&&RxBuf[8]==0xff&&RxBuf[17]==0xff)
- {
- //沒有天數(shù),沒有車牌
- segs[segno++]=au_rk;
- }
- else if(RxBuf[5]==0xff&&RxBuf[6]==0xff&&RxBuf[7]==0xff&&RxBuf[8]==0xff)
- {
- //沒有天數(shù),有車牌
- segs[segno++]=151;
- segno+=cm_cp(&RxBuf[17]);
- segs[segno++]=152;
- }
- else if(RxBuf[17]==0xff)
- {
- //有天數(shù),沒有車牌
- segs[segno++]=139;
- segno+=cm_n_day((unsigned int)((RxBuf[5]&0xf)*1000+(RxBuf[6]&0xf)*100+(RxBuf[7]&0xf)*10+(RxBuf[8]&0xf)));
- }
- else
- {
- //有天數(shù),有車牌
- segs[segno++]=151;
- segno+=cm_cp(&RxBuf[17]);
- segs[segno++]=152;
- segs[segno++]=106;
- segno+=cm_n_day((unsigned int)((RxBuf[5]&0xf)*1000+(RxBuf[6]&0xf)*100+(RxBuf[7]&0xf)*10+(RxBuf[8]&0xf)));
- }
- break;
- case 0x6b://cmd_no:0x6b
- delay4bytes(25);
- if(RxBuf[5]==0xff&&RxBuf[6]==0xff&&RxBuf[7]==0xff&&RxBuf[8]==0xff&&RxBuf[17]==0xff)
- {
- //沒有天數(shù),沒有車牌
- segs[segno++]=au_ck;
- }
- else if(RxBuf[5]==0xff&&RxBuf[6]==0xff&&RxBuf[7]==0xff&&RxBuf[8]==0xff)
- {
- //沒有天數(shù),有車牌
- segno+=cm_cp(&RxBuf[17]);
- segs[segno++]=au_ck;
- }
- else if(RxBuf[17]==0xff)
- {
- //有天數(shù),沒有車牌
- segs[segno++]=140;
- segno+=cm_n_day((unsigned int)((RxBuf[5]&0xf)*1000+(RxBuf[6]&0xf)*100+(RxBuf[7]&0xf)*10+(RxBuf[8]&0xf)));
- }
- else
- {
- //有天數(shù),有車牌
- segno+=cm_cp(&RxBuf[17]);
- segs[segno++]=140;
- segno+=cm_n_day((unsigned int)((RxBuf[5]&0xf)*1000+(RxBuf[6]&0xf)*100+(RxBuf[7]&0xf)*10+(RxBuf[8]&0xf)));
- }
- break;
- case 0x6c://cmd_no:0x6c
- delay4bytes(25);
- if(RxBuf[5]==0xff&&RxBuf[6]==0xff&&RxBuf[7]==0xff&&RxBuf[8]==0xff&&RxBuf[17]==0xff)
- {
- //沒有錢數(shù),沒有車牌
- segs[segno++]=au_rk;
- }
- else if(RxBuf[5]==0xff&&RxBuf[6]==0xff&&RxBuf[7]==0xff&&RxBuf[8]==0xff)
- {
- //沒有錢數(shù),有車牌
- segs[segno++]=151;
- segno+=cm_cp(&RxBuf[17]);
- segs[segno++]=152;
- }
- else if(RxBuf[17]==0xff)
- {
- //有錢數(shù),沒有車牌
- segs[segno++]=au_rk;
- segs[segno++]=148;
- n=((RxBuf[5]&0x0f)<<12)+((RxBuf[6]&0x0f)<<8)+((RxBuf[7]&0x0f)<<4)+((RxBuf[8]&0x0f)<<0);
- segno+=cm_n_yuan(n);
- }
- else
- {
- //有錢數(shù),有車牌
- segs[segno++]=151;
- segno+=cm_cp(&RxBuf[17]);
- segs[segno++]=152;
- segs[segno++]=148;
- n=((RxBuf[5]&0x0f)<<12)+((RxBuf[6]&0x0f)<<8)+((RxBuf[7]&0x0f)<<4)+((RxBuf[8]&0x0f)<<0);
- segno+=cm_n_yuan(n);
- }
- break;
- case 0x6d://cmd_no:0x6d
- delay4bytes(25);
- for(n=5;n<24;n++) if(RxBuf[n]!=0xff) break;
- if(n>23)
- {
- segs[segno++]=au_ck;break;
- }
- for(n=17;n<24;n++) if(RxBuf[n]!=0xff) break;
- if(n>23)
- {
- segs[segno++]=au_ck;
- segs[segno++]=136;//停車
- //xx天xx小時xx分
- day=RxBuf[13]*256+RxBuf[14];
- hour=RxBuf[15];
- minute=(RxBuf[16]>>4)*10+(RxBuf[16]&0x0f);
- cm_n_time();
- segs[segno++]=114;
- n=((RxBuf[9]&0x0f)<<12)+((RxBuf[10]&0x0f)<<8)+((RxBuf[11]&0x0f)<<4)+((RxBuf[12]&0x0f)<<0);
- segno+=cm_n_yuan(n);
- segs[segno++]=147;
- n=((RxBuf[5]&0x0f)<<12)+((RxBuf[6]&0x0f)<<8)+((RxBuf[7]&0x0f)<<4)+((RxBuf[8]&0x0f)<<0);
- segno+=cm_n_yuan(n);
- break;
- }
- segno+=cm_cp(&RxBuf[17]);
- segs[segno++]=au_ck;
- segs[segno++]=136;//停車
- //xx天xx小時xx分
- day=RxBuf[13]*256+RxBuf[14];
- hour=RxBuf[15];
- minute=(RxBuf[16]>>4)*10+(RxBuf[16]&0x0f);
- cm_n_time();
- segs[segno++]=114;
- n=((RxBuf[9]&0x0f)<<12)+((RxBuf[10]&0x0f)<<8)+((RxBuf[11]&0x0f)<<4)+((RxBuf[12]&0x0f)<<0);
- segno+=cm_n_yuan(n);
- segs[segno++]=147;
- n=((RxBuf[5]&0x0f)<<12)+((RxBuf[6]&0x0f)<<8)+((RxBuf[7]&0x0f)<<4)+((RxBuf[8]&0x0f)<<0);
- segno+=cm_n_yuan(n);
- break;
- case 0x6e://cmd_no:0x6e
- segs[segno++]=128;
- break;
- }
- }
- */
- void do_cmd()
- {
- unsigned int data i;
- unsigned char m,k,t,g,cp,xzm,cpl,jing;
- unsigned char sbs[7];
- //cr= cal_crc(rx_buf,18);
- //if((rx_buf[18]==(cr>>8))&&(rx_buf[19]==(cr&0x00ff)))
- //{
- //send_UART_one(0x8a);
- //for(i=0;i<26;i++)
- // send_UART_one(rx_buf[i]);
- tx_bz=1;
- jsq_dg=0;
- if(rx_buf[25]==0x11) {cpl=7;jing=1;}
- if(rx_buf[25]==0x10) {cpl=7;jing=0;}
- if(rx_buf[25]==0x01) {cpl=6;jing=1;}
- if(rx_buf[25]==0x00) {cpl=6;jing=0;}
- //timeH=((rx_buf[22]-0x30)*10)+(rx_buf[23]-0x30);
- //timeM=((rx_buf[24]-0x30)*10)+(rx_buf[25]-0x30);
- switch(rx_buf[0])
- {
- case 0x30: // 歡迎光臨+陜RF680 可用日期 日期
- {
- jsq_dg=1;
- // send_UART_one(0x30);
- play(102);
- delay1ms(15);
- /////////車牌
- for(i=0;i<31;i++)
- {if((rx_buf[1]==(unsigned char)(sheng_n[i]>>8))&& (rx_buf[2]==(unsigned char)(sheng_n[i]&0x00ff))) //2 3
- { play(41+i);
- delay1ms(10);
- i=32;
- }
- }
- if((rx_buf[1]>0x40)&&(rx_buf[1]<0x5b)&&(rx_buf[2]>0x40)&&(rx_buf[2]<0x5b)) ////車
- {
- for(i=0;i<26;i++)
- {if(rx_buf[1]==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=26;
- }
- }
- for(i=0;i<26;i++)
- {if(rx_buf[2]==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=26;
- }
- }
-
- }
- for(cp=0;cp<cpl;cp++) ///hz 16 zm asc cw 16
- { xzm=rx_buf[3+cp]; ///xzm=rx_buf[4+cp];
- for(i=0;i<10;i++)
- {if(xzm==DIG[i])
- { play(i);
- delay1ms(10);
- i=11;
- }
-
- }
- for(i=0;i<26;i++)
- {if(xzm==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=26;
- }
- }
- }
- /////////////車牌
- if (cpl==6)
- {
- m=sb_dig(rx_buf[9],rx_buf[10],rx_buf[11],rx_buf[12]); //有效期
- t=read_sb(m,sbs,k);
- play(106);
- delay1ms(15);
- for(i=0;i<t;i++)
- {
- play(sbs[i]);
- delay1ms(10);
- }
- play(101);
- delay1ms(10);
- if((unsigned int)rx_buf[9]*1000+(unsigned int)rx_buf[10]*100+rx_buf[11]*10+rx_buf[12]<14)
- play(125);
- }
- else
- {
- m=sb_dig(rx_buf[10],rx_buf[11],rx_buf[12],rx_buf[13]); //有效期
- t=read_sb(m,sbs,k);
- play(106);
- delay1ms(15);
- for(i=0;i<t;i++)
- {
- play(sbs[i]);
- delay1ms(10);
- }
- play(101);
- delay1ms(10);
- if((unsigned int)rx_buf[10]*1000+(unsigned int)rx_buf[11]*100+rx_buf[12]*10+rx_buf[13]<14)
- play(125);
- }
- //請盡快延期
- break;
- }
- case 0x31 : ///一路順風,可用日期
- { jsq_dg=1;
- play(104);
- delay1ms(15);
- /////////車牌
- for(i=0;i<31;i++)
- {if((rx_buf[1]==(unsigned char)(sheng_n[i]>>8))&& (rx_buf[2]==(unsigned char)(sheng_n[i]&0x00ff))) //2 3
- { play(41+i);
- delay1ms(10);
- i=32;
- }
- }
- if((rx_buf[1]>0x40)&&(rx_buf[1]<0x5b)&&(rx_buf[2]>0x40)&&(rx_buf[2]<0x5b)) ////車
- {
- for(i=0;i<26;i++)
- {if(rx_buf[1]==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=25;
- }
- }
- for(i=0;i<26;i++)
- {if(rx_buf[2]==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=25;
- }
- }
-
- }
- for(cp=0;cp<cpl;cp++) ///hz 16 zm asc cw 16
- { xzm=rx_buf[3+cp]; ///xzm=rx_buf[4+cp];
- for(i=0;i<10;i++)
- {if(xzm==DIG[i])
- { play(i);
- delay1ms(10);
- i=11;
- }
-
- }
- for(i=0;i<26;i++)
- {if(xzm==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=25;
- }
- }
- }
- /////////////車牌
- if(cpl==6)
- {
- m=sb_dig(rx_buf[9],rx_buf[10],rx_buf[11],rx_buf[12]); //有效期
- t=read_sb(m,sbs,k);
- play(106);
- delay1ms(15);
- for(i=0;i<t;i++)
- {
- play(sbs[i]);
- delay1ms(10);
- }
- play(101);
- delay1ms(10);
- if((unsigned int)rx_buf[9]*1000+(unsigned int)rx_buf[10]*100+rx_buf[11]*10+rx_buf[12]<14)
- play(125); //請盡快延期
- }
- else
- {
- m=sb_dig(rx_buf[10],rx_buf[11],rx_buf[12],rx_buf[13]); //有效期
- t=read_sb(m,sbs,k);
- play(106);
- delay1ms(15);
- for(i=0;i<t;i++)
- {
- play(sbs[i]);
- delay1ms(10);
- }
- play(101);
- delay1ms(10);
- if((unsigned int)rx_buf[10]*1000+(unsigned int)rx_buf[11]*100+rx_buf[12]*10+rx_buf[13]<14)
- play(125); //請盡快延期
-
- }
- break; //一路順風+可用日期 日期
- }
- case 0x32:
- {
- jsq_dg=1;
- // send_UART_one(0x30);
- play(102);
- delay1ms(15);
- /////////車牌
- for(i=0;i<31;i++)
- {if((rx_buf[1]==(unsigned char)(sheng_n[i]>>8))&& (rx_buf[2]==(unsigned char)(sheng_n[i]&0x00ff))) //2 3
- { play(41+i);
- delay1ms(10);
- i=32;
- }
- }
- if((rx_buf[1]>0x40)&&(rx_buf[1]<0x5b)&&(rx_buf[2]>0x40)&&(rx_buf[2]<0x5b)) ////車
- {
- for(i=0;i<26;i++)
- {if(rx_buf[1]==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=26;
- }
- }
- for(i=0;i<26;i++)
- {if(rx_buf[2]==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=26;
- }
- }
-
- }
- for(cp=0;cp<cpl;cp++) ///hz 16 zm asc cw 16
- { xzm=rx_buf[3+cp]; ///xzm=rx_buf[4+cp];
- for(i=0;i<10;i++)
- {if(xzm==DIG[i])
- { play(i);
- delay1ms(10);
- i=11;
- }
-
- }
- for(i=0;i<26;i++)
- {if(xzm==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=26;
- }
- }
- }
-
- /////////////車牌
- if(cpl==6)
- {
- m=sb_dig(0,rx_buf[9],rx_buf[10],rx_buf[11]); //余額
- t=read_sb(m,sbs,k);
- play(148);
- delay1ms(15);
- for(i=0;i<t;i++)
- {
- play(sbs[i]);
- delay1ms(10);
- }
- play(14);
- delay1ms(10);
- play(rx_buf[13]);
- delay1ms(10);
- play(rx_buf[14]);
- delay1ms(10);
- play(99);
- delay1ms(10);
- if((unsigned int)rx_buf[9]*1000+(unsigned int)rx_buf[10]*100+rx_buf[11]*10+rx_buf[12]<14)
- play(125); //請盡快延期
- }
- else
- {
- m=sb_dig(0,rx_buf[10],rx_buf[11],rx_buf[12]); //余額
- t=read_sb(m,sbs,k);
- play(148);
- delay1ms(15);
- for(i=0;i<t;i++)
- {
- play(sbs[i]);
- delay1ms(10);
- }
- play(14);
- delay1ms(10);
- play(rx_buf[14]);
- delay1ms(10);
- play(rx_buf[15]);
- delay1ms(10);
- play(99);
- delay1ms(10);
- if((unsigned int)rx_buf[10]*1000+(unsigned int)rx_buf[11]*100+rx_buf[12]*10+rx_buf[13]<14)
- play(125); //請盡快延期
-
- }
- break;
- }
- case 0x33:
- {
- jsq_dg=1;
- // send_UART_one(0x30);
- play(104);
- delay1ms(15);
- /////////車牌
- for(i=0;i<31;i++)
- {if((rx_buf[1]==(unsigned char)(sheng_n[i]>>8))&& (rx_buf[2]==(unsigned char)(sheng_n[i]&0x00ff))) //2 3
- { play(41+i);
- delay1ms(10);
- i=32;
- }
- }
- if((rx_buf[1]>0x40)&&(rx_buf[1]<0x5b)&&(rx_buf[2]>0x40)&&(rx_buf[2]<0x5b)) ////車
- {
- for(i=0;i<26;i++)
- {if(rx_buf[1]==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=26;
- }
- }
- for(i=0;i<26;i++)
- {if(rx_buf[2]==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=26;
- }
- }
-
- }
- for(cp=0;cp<cpl;cp++) ///hz 16 zm asc cw 16
- { xzm=rx_buf[3+cp]; ///xzm=rx_buf[4+cp];
- for(i=0;i<10;i++)
- {if(xzm==DIG[i])
- { play(i);
- delay1ms(10);
- i=11;
- }
-
- }
- for(i=0;i<26;i++)
- {if(xzm==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=26;
- }
- }
- }
- /////////////車牌 //xx xx XX XX 停 xxx時 xxx.xx 元余xxx.00元
- if(cpl==6)
- {
- m=sb_dig(0,rx_buf[9],rx_buf[10],rx_buf[11]); //小時
- t=read_sb(m,sbs,k);
- play(136);
- delay1ms(15);
- for(i=0;i<t;i++)
- {
- play(sbs[i]);
- delay1ms(10);
- }
- play(137);
- delay1ms(10);
- ////本次扣xxx
- m=sb_dig(0,rx_buf[12],rx_buf[13],rx_buf[14]); //
- t=read_sb(m,sbs,k);
- play(114);
- delay1ms(15);
- for(i=0;i<t;i++)
- {
- play(sbs[i]);
- delay1ms(10);
- }
- play(14);
- delay1ms(10);
- play(rx_buf[16]);
- delay1ms(10);
- play(rx_buf[17]);
- delay1ms(10);
- play(99);
- delay1ms(10);
- if((unsigned int)rx_buf[18]*100+(unsigned int)rx_buf[19]*10+rx_buf[20]<14)
- play(125); //請盡快延期
- }
- else
- {
- m=sb_dig(0,rx_buf[10],rx_buf[11],rx_buf[12]); //小時
- t=read_sb(m,sbs,k);
- play(136);
- delay1ms(15);
- for(i=0;i<t;i++)
- {
- play(sbs[i]);
- delay1ms(10);
- }
- play(137);
- delay1ms(10);
- ////本次扣xxx
- m=sb_dig(0,rx_buf[13],rx_buf[14],rx_buf[15]); //
- t=read_sb(m,sbs,k);
- play(114);
- delay1ms(15);
- for(i=0;i<t;i++)
- {
- play(sbs[i]);
- delay1ms(10);
- }
- play(14);
- delay1ms(10);
- play(rx_buf[17]);
- delay1ms(10);
- play(rx_buf[18]);
- delay1ms(10);
- play(99);
- delay1ms(10);
- if((unsigned int)rx_buf[19]*100+(unsigned int)rx_buf[20]*10+rx_buf[21]<14)
- play(125); //請盡快延期
-
- }
- break;
- }
- case 0x34: /// ///陜aaa111 同等車在場 現(xiàn)轉(zhuǎn)為時祖車入場
- { jsq_dg=1;
- for(i=0;i<31;i++)
- {if((rx_buf[1]==(unsigned char)(sheng_n[i]>>8))&& (rx_buf[2]==(unsigned char)(sheng_n[i]&0x00ff))) //2 3
- { play(41+i);
- delay1ms(10);
- i=32;
- }
- }
- if((rx_buf[1]>0x40)&&(rx_buf[1]<0x5b)&&(rx_buf[2]>0x40)&&(rx_buf[2]<0x5b)) ////車
- {
- for(i=0;i<26;i++)
- {if(rx_buf[1]==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=25;
- }
- }
- for(i=0;i<26;i++)
- {if(rx_buf[2]==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=25;
- }
- }
-
- }
- for(cp=0;cp<cpl;cp++) ///hz 16 zm asc cw 16
- { xzm=rx_buf[3+cp]; ///xzm=rx_buf[4+cp];
- for(i=0;i<10;i++)
- {if(xzm==DIG[i])
- { play(i);
- delay1ms(10);
- i=11;
- }
-
- }
- for(i=0;i<26;i++)
- {if(xzm==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=25;
- }
- }
- }
- /////////////車牌
-
- play(110);
- delay1ms(15);
- play(173);
- delay1ms(15);
- play(172);
-
- break;
- }
- case 0x35:
- { jsq_dg=1;
- for(i=0;i<31;i++)
- {if((rx_buf[1]==(unsigned char)(sheng_n[i]>>8))&& (rx_buf[2]==(unsigned char)(sheng_n[i]&0x00ff))) //2 3
- { play(41+i);
- delay1ms(10);
- i=32;
- }
- }
- if((rx_buf[1]>0x40)&&(rx_buf[1]<0x5b)&&(rx_buf[2]>0x40)&&(rx_buf[2]<0x5b)) ////車
- {
- for(i=0;i<26;i++)
- {if(rx_buf[1]==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=25;
- }
- }
- for(i=0;i<26;i++)
- {if(rx_buf[2]==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=25;
- }
- }
-
- }
- for(cp=0;cp<cpl;cp++) ///hz 16 zm asc cw 16
- { xzm=rx_buf[3+cp]; ///xzm=rx_buf[4+cp];
- for(i=0;i<10;i++)
- {if(xzm==DIG[i])
- { play(i);
- delay1ms(10);
- i=11;
- }
-
- }
- for(i=0;i<26;i++)
- {if(xzm==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=25;
- }
- }
- }
- /////////////車牌
-
- play(110);
- delay1ms(15);
- play(119);
-
-
- break;
- }
- case 0x37://///車位已滿 不能進入
- play(120);
- delay1ms(15);
- play(120);
- break;
- case 0x38: /// ///臨時,停車 分鐘,請交 交 元 陜aaa000停車0123日01時01分交0123元
- jsq_dg=2;
- if(cpl==6)
- {
- m=sb_dig(rx_buf[9],rx_buf[10],rx_buf[11],rx_buf[12]);
- t=read_sb(m,sbs,k);
- }
- else
- {
- m=sb_dig(rx_buf[10],rx_buf[11],rx_buf[12],rx_buf[13]);
- t=read_sb(m,sbs,k);
- }
- //////////////////// 車牌
- for(i=0;i<31;i++)
- {if((rx_buf[1]==(unsigned char)(sheng_n[i]>>8))&& (rx_buf[2]==(unsigned char)(sheng_n[i]&0x00ff))) //2 3
- { play(41+i);
- delay1ms(10);
- }
- }
- if((rx_buf[1]>0x40)&&(rx_buf[1]<0x5b)&&(rx_buf[2]>0x40)&&(rx_buf[2]<0x5b)) ////車
- {
- for(i=0;i<26;i++)
- {if(rx_buf[1]==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=25;
- }
- }
- for(i=0;i<26;i++)
- {if(rx_buf[2]==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=25;
- }
- }
- }
-
- for(cp=0;cp<cpl;cp++) ///hz 16 zm asc cw 16
- {
- xzm=rx_buf[3+cp]; ///xzm=rx_buf[4+cp];
- for(i=0;i<10;i++)
- {
- if(xzm==DIG[i])
- { play(i);
- delay1ms(10);
- }
- }
- for(i=0;i<26;i++)
- {
- if(xzm==zm[i])
- {
- play(15+i);
- delay1ms(10);
- }
- }
- }
- ///////////////////////
- play(136);
- delay1ms(10);
- for(i=0;i<t;i++)
- {
- play(sbs[i]);
- delay1ms(10);
- }
- if(i>0)
- {
- play(131);
- delay1ms(10);
- }
- if(cpl==6)
- {
- m=sb_dig(0,0,rx_buf[13],rx_buf[14]);
- }
- else
- m=sb_dig(0,0,rx_buf[14],rx_buf[15]);
- g=read_sb(m,sbs,k);
- for(i=0;i<g;i++)
- {
- play(sbs[i]);
- delay1ms(10);
- }
- if(i>0)
- {
- play(137);
- delay1ms(10);
- }
- if(cpl==6) m=sb_dig(0,0,rx_buf[15],rx_buf[16]);
- else m=sb_dig(0,0,rx_buf[16],rx_buf[17]);
- g=read_sb(m,sbs,k);
- for(i=0;i<g;i++)
- {
- play(sbs[i]);
- delay1ms(10);
- }
- if(i>0)
- {
- play(138);
- delay1ms(10);
- }
- play(114);
- delay1ms(10);
- if(cpl==6) m=sb_dig(rx_buf[17],rx_buf[18],rx_buf[19],rx_buf[20]);
- else m=sb_dig(rx_buf[18],rx_buf[19],rx_buf[20],rx_buf[21]);
- t=read_sb(m,sbs,k);
- for(i=0;i<t;i++)
- {
- play(sbs[i]);
- delay1ms(10);
- }
- play(99);
- break;
- case 0x39: /////陜aaa000 時租車 ,歡迎入場
- { jsq_dg=1;
- for(i=0;i<31;i++)
- {if((rx_buf[1]==(unsigned char)(sheng_n[i]>>8))&& (rx_buf[2]==(unsigned char)(sheng_n[i]&0x00ff))) //2 3
- { play(41+i);
- delay1ms(10);
- }
- }
- if((rx_buf[1]>0x40)&&(rx_buf[1]<0x5b)&&(rx_buf[2]>0x40)&&(rx_buf[2]<0x5b)) ////車
- {
- for(i=0;i<26;i++)
- {if(rx_buf[1]==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=25;
- }
- }
- for(i=0;i<26;i++)
- {if(rx_buf[2]==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=25;
- }
- }
- }
-
- for(cp=0;cp<cpl;cp++) ///hz 16 zm asc cw 16
- {
- xzm=rx_buf[3+cp]; ///xzm=rx_buf[4+cp];
- for(i=0;i<10;i++)
- {
- if(xzm==DIG[i])
- { play(i);
- delay1ms(10);
- }
- }
- for(i=0;i<26;i++)
- {
- if(xzm==zm[i])
- {
- play(15+i);
- delay1ms(10);
- }
- }
- }
- play(173);
- delay1ms(15);
- play(172);
- break;
- }
- case 0x3c: //此余額不足。轉(zhuǎn)入臨時車入場
- {
- ////////車牌
- jsq_dg=1;
- for(i=0;i<31;i++)
- {if((rx_buf[1]==(unsigned char)(sheng_n[i]>>8))&& (rx_buf[2]==(unsigned char)(sheng_n[i]&0x00ff))) //2 3
- { play(41+i);
- delay1ms(10);
- i=32;
- }
- }
- if((rx_buf[1]>0x40)&&(rx_buf[1]<0x5b)&&(rx_buf[2]>0x40)&&(rx_buf[2]<0x5b)) ////車
- {
- for(i=0;i<26;i++)
- {if(rx_buf[1]==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=25;
- }
- }
- for(i=0;i<26;i++)
- {if(rx_buf[2]==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=25;
- }
- }
-
- }
- for(cp=0;cp<cpl;cp++) ///hz 16 zm asc cw 16
- { xzm=rx_buf[3+cp]; ///xzm=rx_buf[4+cp];
- for(i=0;i<10;i++)
- {if(xzm==DIG[i])
- { play(i);
- delay1ms(10);
- i=11;
- }
-
- }
- for(i=0;i<26;i++)
- {if(xzm==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=25;
- }
- }
- }
- /////////////車牌
- delay1ms(15);
- play(107);
- delay1ms(15);
- play(173);
- delay1ms(15);
- play(172);
- break;
- }
- case 0x3d: // 陜aaa111 此車已過期 現(xiàn)轉(zhuǎn)為時祖車入場 //
- {
- ////////車牌
- jsq_dg=1;
- for(i=0;i<31;i++)
- {if((rx_buf[1]==(unsigned char)(sheng_n[i]>>8))&& (rx_buf[2]==(unsigned char)(sheng_n[i]&0x00ff))) //2 3
- { play(41+i);
- delay1ms(10);
- i=32;
- }
- }
- if((rx_buf[1]>0x40)&&(rx_buf[1]<0x5b)&&(rx_buf[2]>0x40)&&(rx_buf[2]<0x5b)) ////車
- {
- for(i=0;i<26;i++)
- {if(rx_buf[1]==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=25;
- }
- }
- for(i=0;i<26;i++)
- {if(rx_buf[2]==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=25;
- }
- }
-
- }
- for(cp=0;cp<cpl;cp++) ///hz 16 zm asc cw 16
- { xzm=rx_buf[3+cp]; ///xzm=rx_buf[4+cp];
- for(i=0;i<10;i++)
- {if(xzm==DIG[i])
- { play(i);
- delay1ms(10);
- i=11;
- }
-
- }
- for(i=0;i<26;i++)
- {if(xzm==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=25;
- }
- }
- }
- /////////////車牌
- delay1ms(15);
- play(108);
- delay1ms(15);
- play(173);
- delay1ms(15);
- play(172);
- break;
- }
- case 0x41: // 陜aaa111 此車已過期 系統(tǒng)禁止入場 //
- {
- ////////車牌
- jsq_dg=1;
- for(i=0;i<31;i++)
- {if((rx_buf[1]==(unsigned char)(sheng_n[i]>>8))&& (rx_buf[2]==(unsigned char)(sheng_n[i]&0x00ff))) //2 3
- { play(41+i);
- delay1ms(10);
- i=32;
- }
- }
- if((rx_buf[1]>0x40)&&(rx_buf[1]<0x5b)&&(rx_buf[2]>0x40)&&(rx_buf[2]<0x5b)) ////車
- {
- for(i=0;i<26;i++)
- {if(rx_buf[1]==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=25;
- }
- }
- for(i=0;i<26;i++)
- {if(rx_buf[2]==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=25;
- }
- }
-
- }
- for(cp=0;cp<cpl;cp++) ///hz 16 zm asc cw 16
- { xzm=rx_buf[3+cp]; ///xzm=rx_buf[4+cp];
- for(i=0;i<10;i++)
- {if(xzm==DIG[i])
- { play(i);
- delay1ms(10);
- i=11;
- }
-
- }
- for(i=0;i<26;i++)
- {if(xzm==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=25;
- }
- }
- }
- /////////////車牌
- delay1ms(15);
- play(108);
- delay1ms(15);
- play(119);
-
- break;
- }
- case 0x44: //支付成功,請通行
- ////////車牌
- jsq_dg=1;
- for(i=0;i<31;i++)
- {if((rx_buf[1]==(unsigned char)(sheng_n[i]>>8))&& (rx_buf[2]==(unsigned char)(sheng_n[i]&0x00ff))) //2 3
- { play(41+i);
- delay1ms(10);
- i=32;
- }
- }
- if((rx_buf[1]>0x40)&&(rx_buf[1]<0x5b)&&(rx_buf[2]>0x40)&&(rx_buf[2]<0x5b)) ////車
- {
- for(i=0;i<26;i++)
- {if(rx_buf[1]==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=25;
- }
- }
- for(i=0;i<26;i++)
- {if(rx_buf[2]==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=25;
- }
- }
-
- }
- for(cp=0;cp<cpl;cp++) ///hz 16 zm asc cw 16
- { xzm=rx_buf[3+cp]; ///xzm=rx_buf[4+cp];
- for(i=0;i<10;i++)
- {if(xzm==DIG[i])
- { play(i);
- delay1ms(10);
- i=11;
- }
-
- }
- for(i=0;i<26;i++)
- {if(xzm==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=25;
- }
- }
- }
- play(172);
- /////////////車牌
- break;
- case 0x45: // 陜xxxxx 金額不足,請 元
- jsq_dg=1;
- for(i=0;i<31;i++)
- {if((rx_buf[1]==(unsigned char)(sheng_n[i]>>8))&& (rx_buf[2]==(unsigned char)(sheng_n[i]&0x00ff))) //2 3
- { play(41+i);
- delay1ms(10);
- i=32;
- }
- }
- if((rx_buf[1]>0x40)&&(rx_buf[1]<0x5b)&&(rx_buf[2]>0x40)&&(rx_buf[2]<0x5b)) ////車
- {
- for(i=0;i<26;i++)
- {if(rx_buf[1]==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=25;
- }
- }
- for(i=0;i<26;i++)
- {if(rx_buf[2]==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=25;
- }
- }
-
- }
- for(cp=0;cp<cpl;cp++) ///hz 16 zm asc cw 16
- { xzm=rx_buf[3+cp]; ///xzm=rx_buf[4+cp];
- for(i=0;i<10;i++)
- {if(xzm==DIG[i])
- { play(i);
- delay1ms(10);
- i=11;
- }
-
- }
- for(i=0;i<26;i++)
- {if(xzm==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=25;
- }
- }
- }
- play(107);
- delay1ms(15);
- play(115);
- delay1ms(15);
- // if(cpl==6) m=sb_dig(rx_buf[17],rx_buf[18],rx_buf[19],rx_buf[20]);
- //else
- m=sb_dig(rx_buf[18],rx_buf[19],rx_buf[20],rx_buf[21]);
- t=read_sb(m,sbs,k);
- for(i=0;i<t;i++)
- {
- play(sbs[i]);
- delay1ms(10);
- }
- play(99);
- break;
- case 0x4b: // 陜aaa111 現(xiàn)在時租車輛 暫時不能通行 //
- {
- ////////車牌
- jsq_dg=1;
- for(i=0;i<31;i++)
- {if((rx_buf[1]==(unsigned char)(sheng_n[i]>>8))&& (rx_buf[2]==(unsigned char)(sheng_n[i]&0x00ff))) //2 3
- { play(41+i);
- delay1ms(10);
- i=32;
- }
- }
- if((rx_buf[1]>0x40)&&(rx_buf[1]<0x5b)&&(rx_buf[2]>0x40)&&(rx_buf[2]<0x5b)) ////車
- {
- for(i=0;i<26;i++)
- {if(rx_buf[1]==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=25;
- }
- }
- for(i=0;i<26;i++)
- {if(rx_buf[2]==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=25;
- }
- }
-
- }
- for(cp=0;cp<cpl;cp++) ///hz 16 zm asc cw 16
- { xzm=rx_buf[3+cp]; ///xzm=rx_buf[4+cp];
- for(i=0;i<10;i++)
- {if(xzm==DIG[i])
- { play(i);
- delay1ms(10);
- i=11;
- }
-
- }
- for(i=0;i<26;i++)
- {if(xzm==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=25;
- }
- }
- }
- /////////////車牌
- delay1ms(15);
- play(178);
- delay1ms(15);
- play(119);
-
- break;
- }
- /*
- case 0x43: // //剩余車位數(shù) 7
- {
- play(157);
- delay1ms(15);
- m=sb_dig(rx_buf[1],rx_buf[2],rx_buf[3],rx_buf[4]);
- t=read_sb(m,sbs,k);
- for(i=0;i<t;i++)
- {
- play(sbs[i]); // 防
- delay1ms(10);
- }
- break;
- }
- */
- case 0x4d: //陜aaa111 此門未授權(quán) ,不得進入
- jsq_dg=1;
- for(i=0;i<31;i++)
- {if((rx_buf[1]==(unsigned char)(sheng_n[i]>>8))&& (rx_buf[2]==(unsigned char)(sheng_n[i]&0x00ff))) //2 3
- { play(41+i);
- delay1ms(10);
- i=32;
- }
- }
- if((rx_buf[1]>0x40)&&(rx_buf[1]<0x5b)&&(rx_buf[2]>0x40)&&(rx_buf[2]<0x5b)) ////車
- {
- for(i=0;i<26;i++)
- {if(rx_buf[1]==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=25;
- }
- }
- for(i=0;i<26;i++)
- {if(rx_buf[2]==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=25;
- }
- }
-
- }
- for(cp=0;cp<cpl;cp++) ///hz 16 zm asc cw 16
- { xzm=rx_buf[3+cp]; ///xzm=rx_buf[4+cp];
- for(i=0;i<10;i++)
- {if(xzm==DIG[i])
- { play(i);
- delay1ms(10);
- i=11;
- }
-
- }
- for(i=0;i<26;i++)
- {if(xzm==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=25;
- }
- }
- }
- /////////////車牌
- delay1ms(10);
- play(113);
- break;
- case 0x4c: // //陜aaa111 此門未授權(quán) 現(xiàn)轉(zhuǎn)為時祖車入場 //
-
- jsq_dg=1;
- for(i=0;i<31;i++)
- {if((rx_buf[1]==(unsigned char)(sheng_n[i]>>8))&& (rx_buf[2]==(unsigned char)(sheng_n[i]&0x00ff))) //2 3
- { play(41+i);
- delay1ms(10);
- i=32;
- }
- }
- if((rx_buf[1]>0x40)&&(rx_buf[1]<0x5b)&&(rx_buf[2]>0x40)&&(rx_buf[2]<0x5b)) ////車
- {
- for(i=0;i<26;i++)
- {if(rx_buf[1]==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=25;
- }
- }
- for(i=0;i<26;i++)
- {if(rx_buf[2]==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=25;
- }
- }
-
- }
- for(cp=0;cp<cpl;cp++) ///hz 16 zm asc cw 16
- { xzm=rx_buf[3+cp]; ///xzm=rx_buf[4+cp];
- for(i=0;i<10;i++)
- {if(xzm==DIG[i])
- { play(i);
- delay1ms(10);
- i=11;
- }
-
- }
- for(i=0;i<26;i++)
- {if(xzm==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=25;
- }
- }
- }
- /////////////車牌
- delay1ms(10);
- play(113);
- delay1ms(10);
- play(173);
- delay1ms(10);
- play(172);
- break;
- case 0x49:// //// 陜aaa000,與入場車牌不符,請重新識別
- ////////車牌
- for(i=0;i<31;i++)
- {if((rx_buf[1]==(unsigned char)(sheng_n[i]>>8))&& (rx_buf[2]==(unsigned char)(sheng_n[i]&0x00ff))) //2 3
- { play(41+i);
- delay1ms(10);
- i=32;
- }
- }
- if((rx_buf[1]>0x40)&&(rx_buf[1]<0x5b)&&(rx_buf[2]>0x40)&&(rx_buf[2]<0x5b)) ////車
- {
- for(i=0;i<26;i++)
- {if(rx_buf[1]==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=25;
- }
- }
- for(i=0;i<26;i++)
- {if(rx_buf[2]==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=25;
- }
- }
-
- }
- for(cp=0;cp<cpl;cp++) ///hz 16 zm asc cw 16
- { xzm=rx_buf[3+cp]; ///xzm=rx_buf[4+cp];
- for(i=0;i<10;i++)
- {if(xzm==DIG[i])
- { play(i);
- delay1ms(10);
- i=11;
- }
-
- }
- for(i=0;i<26;i++)
- {if(xzm==zm[i])
- {
- play(15+i);
- delay1ms(10);
- i=25;
- }
- }
- }
- /////////////車牌
- delay1ms(10);
- play(162);
- delay1ms(10);
- play(128);
- break;
- default:
- break;
- // }
- }
- tx_bz=0;
- }
- void UART_one_Interrupt_Receive(void) interrupt 4
- {
- if(RI==1)
- {
- RI = 0;
- // send_UART_two(0x3a);
- if(rx_bz1==1)
- { rx_buf1[rx_count1]=SBUF;
- rx_count1++;
- if(rx_count1==5)
- {
- rx_bz1=0;
- rx_count1=0;
- if(ic_bz==0) icwrite();
-
- }
- }
- if((SBUF==0x3c)&&(rx_bz1==0)) {rx_count1=0;rx_bz1=1;}
- }
- else
- {
- TI = 0;
- }
- }
- void UART_two_Interrupt_Receive(void) interrupt 8
- {
- // unsigned char k = 0;
- rx1_bz = S2CON ;
- rx1_bz = rx1_bz & 0x01;
- //if(S2RI==1)
- if(rx1_bz==1)
- { // rx_ct=0;
- //RI = 0;
- S2CON = S2CON & 0xFE; //1111,1110
- // S2_Interrupt_Receive_Led = 0;
- if(rx_bz==1)
- { rx_buf[rx_count]=S2BUF;
- rx_count++;
-
- if(rx_count==26)
- {
- rx_bz=0;
- rx_count=0;
- // if(tx_bz==0)
- // {
- tx_bz=1;
- if((rx_buf[0]<0x55) && (rx_buf[0]>0x2f) )do_cmd();
- // }
-
- rx_bz=0;
- tx_bz=0;
- }
- }
- if((S2BUF==0x8a)&&(rx_bz==0)) {rx_count=0;rx_bz=1;}
- // if(rx_ct>5000) {rx_ct=0;rx_count=0;}
- }
- else
- {
- //TI = 0;
- S2CON = S2CON & 0xFD; //1111,1101
- }
- }
- //#define T1MS (65536-FOSC/12/1000) //12T模式
- //Auxiliary register
- //-----------------------------------------------
- /* Timer0 interrupt routine */
- void tm0_isr() interrupt 1 using 1 ////控制補光燈
- {
- TL0 = T1MS; //reload timer0 low byte
- TH0 = T1MS >> 8; //reload timer0 high byte
- if (count-- == 0) //1ms * 1000 -> 1s
- {
- count=1000;
- timeS++;
- if(timeS==60)
- {timeM++;timeS=0;
- if(timeM==60)
- {timeH++;
- timeM=0;
- timeS=0;
- if(timeH==24)
- {timeH=0;
- timeM=0;
- timeS=0;
- }
- }
- }
- }
- }
- main()
- { unsigned char i;
- ii=0;
- tx_bz=0;
- ic_bz=0;
- card[0]=0x00;
- card[1]=0x00;
- card[2]=0x00;
- serial_port_one_initial();
- serial_port_two_initial();
- ////////////////////
- count = 1000;
- // AUXR |= 0x80; //定時器0為1T模式
- // AUXR &= 0x7f; //定時器0為12T模式
- // TMOD = 0x01; //設置定時器為模式0(16位自動重裝載)
- // TL0 = T1MS; //初始化計時值
- // TH0 = T1MS >> 8;
- // TR0 = 1; //定時器0開始計時
- // ET0 = 1; //使能定時器0中斷
- // EA = 1;
-
- timeH=7;
- timeM=30;
- play(0xe7);
- //LED=1;
- while(1)
- { LED=~LED;
- if((timeH==7) && (timeM==20)) OPEN=0;
- if((timeH==17) && (timeM==40)) OPEN=1;
- //send_UART_two(0x3a);
- if(DG==0)
- {
- jsq_k=0;
- DGZT=1;
- if(jsq_dg==1) //過閘
- {
- send_UART_two(0x3c);
- for(i=0;i<4;i++) send_UART_two('O');
- send_UART_two(0x3d);
- jsq_dg=0;
- }
- if(jsq_dg==2) ////出車,有效
- {
- send_UART_two(0x3C);
- for(i=0;i<4;i++) send_UART_two('1');
- send_UART_two(0x3D);
- jsq_dg=0;
- }
- }
- if((DG==1)&&(DGZT==1))
- {
- DGZT=0;
- jsq_dg=0;
- CLOSE=1;
- delay1ms(100);
- CLOSE=0;
- CLOSE=1;
- delay1ms(100);
- CLOSE=0;
- }
- if((DG==1)&&(DGZT==0)&&(jsq_dg==1))
- {
- jsq_k++;
- if(jsq_k>1000)
- { jsq_k=0;
- CLOSE=1;
- delay1ms(100);
- CLOSE=0;
- CLOSE=1;
- delay1ms(100);
- CLOSE=0;
- jsq_dg=0;
- }
- }
-
- delay1ms(100);
- }
- }
復制代碼 |