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

📄 main.lst

📁 51普通io口调整125K 都射频卡例子-----
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V6.02  MAIN                                                                   01/16/2009 14:50:25 PAGE 1   


C51 COMPILER V6.02, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN F:\5000\JOP\洗车计费\C\2\MAIN.OBJ
COMPILER INVOKED BY: C:\Keil\C51\C51.EXE F:\5000\JOP\洗车计费\C\2\MAIN.C DB SB OE

stmt level    source

   1          /******************************************************************************************\
   2          ============================================================================================
   3          
   4          /*******************************************************************************************/
   5          #include <reg52.h>
   6          #include <intrins.h>
   7          #define uchar unsigned char
   8          #define uint  unsigned int
   9          #define ulong unsigned long
  10          #define TIME_OF   127	//22.1184M  254     11.0592M  127
  11          #define DELAY_VAL 57	//22.1184M时晶振的值,可用软件模拟准确产生延时115  114   11.0592M  57
  12          
  13          /*******************************************************************************************/
  14          uchar buf[16];
  15          uchar rxbuf[64];
  16          uchar rxs;
  17          ulong SN;
  18          uchar *s;
  19          /*******************************************************************************************/
  20          sbit BEEP=P1^0;
  21          //sbit IN_2270  BIT P1.5              ;2051
  22          sbit Manchester_IN=P1^5;   //曼彻斯特码输入端
  23          sbit CFE  = P1^4;
  24          sbit MODE = P1^6;
  25          sbit green=P3^7;
  26          
  27          /*******************************************************************************************/
  28          
  29          void Inituart(void);
  30          void Delay(uchar n);
  31          void TxData(uchar x);
  32          void  com();
  33          void spk(uchar x);
  34          void spkl(uchar x);
  35          void readid();
  36          ulong Read_Card();//尝试读十次卡,无卡则返回0,有卡则返回卡号
  37          /*******************************************************************************************/
  38          //function main();
  39          /*******************************************************************************************/
  40          void main(void)
  41          {
  42   1      	Inituart();					// initialize 232 uart
  43   1              spkl(1);
  44   1      
  45   1      	while(1)					// circulation
  46   1      	{
  47   2               if (rxs>3)
  48   2                 {
  49   3                  com();
  50   3                 }
  51   2      
  52   2                else
  53   2                 {
  54   3                    readid();
  55   3      
C51 COMPILER V6.02  MAIN                                                                   01/16/2009 14:50:25 PAGE 2   

  56   3                 }
  57   2      	}
  58   1      }
  59          
  60          void  com_isr(void) interrupt 4 // 串口中断
  61          {
  62   1      
  63   1      uint ook;
  64   1         ES=0;
  65   1      
  66   1         ook=0;
  67   1         while(ook<556)
  68   1           {
  69   2            rxbuf[rxs]=SBUF;
  70   2            RI=0;
  71   2            rxs++;
  72   2            ook=0;
  73   2            while(RI==0)
  74   2               {if(ook++>555)break;}
  75   2      
  76   2           }
  77   1      
  78   1         ES=1;
  79   1      
  80   1      }
  81          
  82          
  83          /*******************************************************************************************/
  84          //function Inituart();
  85          /*******************************************************************************************/
  86          void Inituart(void)
  87          {
  88   1      	TMOD = 0x20;				//timer1 working mode 1
  89   1      	TL1 = 0xfd;					//f7=9600 for 16mhz Fosc,and ...
  90   1      	TH1 = 0xfd;					//...fd=19200 for 11.0592mhz Fosc
  91   1      	SCON = 0x50;				//uart mode 3,ren==1
  92   1      	PCON = 0x00;				//smod=0
  93   1      	TR1 = 1;					//start timer1
  94   1              ES=1;      //串口中断
  95   1              EA=1;
  96   1              MODE=0;
  97   1              CFE=0;
  98   1      }
  99          
 100          /*******************************************************************************************/
 101          //function Delay100us();Delay 100us
 102          /*******************************************************************************************/
 103          void Delay(uchar n)
 104          {
 105   1      	uint i;
 106   1      	while(n--)
 107   1      	{for(i=0;i<80;i++); }
 108   1      }
 109          
 110          /*******************************************************************************************/
 111          //Function TxData ();
 112          /*******************************************************************************************/
 113          void TxData(uchar x)
 114          {uint ook;
 115   1              ES=0;
 116   1      	SBUF=x;
 117   1      	while(TI==0){if(ook++>65530){return ;} }
C51 COMPILER V6.02  MAIN                                                                   01/16/2009 14:50:25 PAGE 3   

 118   1      		TI=0;
 119   1              ES=1;
 120   1      }
 121          
 122          uchar rxdata()
 123          { uchar temp,i;
 124   1          ES=0;
 125   1      
 126   1          temp=rxbuf[0];
 127   1          rxs--;
 128   1          for (i=0;i<rxs;i++)
 129   1           {
 130   2            rxbuf[i]=rxbuf[i+1];
 131   2           }
 132   1      
 133   1          ES=1;
 134   1      
 135   1          return temp;
 136   1      }
 137          
 138          /*******************************************************************************************/
 139          void  com()                         //232串口接收 处理
 140          {            uchar i,j,crc,temp,orde;
 141   1                   uint ook;
 142   1      
 143   1                       temp=rxdata();
 144   1                       RI=0;
 145   1                       if(temp!=0xfe){return ;}
 146   1      
 147   1                       ook=0001;
 148   1                       while(rxs==0){if(ook++>65530){spk(3);return ;} }
 149   1                       buf[10]=rxdata();
 150   1                       RI=0;
 151   1      
 152   1                       ook=0001;
 153   1                       while(rxs==0){if(ook++>65530){spk(3);return ;} }
 154   1                       buf[11]=rxdata();
 155   1                       RI=0;
 156   1      
 157   1                       ook=0001;
 158   1                       while(rxs==0){if(ook++>65530){spk(3);return ;} }
 159   1                       orde=rxdata();
 160   1                       RI=0;
 161   1      
 162   1                       ook=0001;
 163   1                       while(rxs==0){if(ook++>65530){spk(3);return ;} }
 164   1                       j=rxdata();
 165   1                       RI=0;
 166   1      
 167   1                       crc=j+orde+buf[11]+buf[10];
 168   1      
 169   1                       for (i=0;i<j;i++)
 170   1                       { ook=0001;
 171   2                        while(rxs==0){if(ook++>65530){spk(3);return ;} }
 172   2                        buf[i]=rxdata();
 173   2                        RI=0;
 174   2                        crc=crc+buf[i];
 175   2                       }
 176   1                       ook=0001;
 177   1                       while(rxs==0){if(ook++>65530){spk(3);return ;} }
 178   1                       temp=rxdata();
 179   1                       RI=0;
C51 COMPILER V6.02  MAIN                                                                   01/16/2009 14:50:25 PAGE 4   

 180   1                       if(temp!=crc){spk(3);return ;}
 181   1      
 182   1                       ook=0001;
 183   1                       while(rxs==0){if(ook++>65530){spk(3);return ;} }
 184   1                       temp=rxdata();
 185   1                       RI=0;
 186   1                       if(temp!=0xfd){spk(3);return ;}
 187   1      
 188   1      
 189   1                       switch(orde)
 190   1                        {
 191   2                           case 02:
 192   2                                spk(buf[0]);
 193   2                               break;
 194   2                           case 03:     //FE 00 00 04 00 04 FD
 195   2                               TxData(0xfe);
 196   2                               TxData(0x00);
 197   2                               TxData(0x00);
 198   2                               TxData(0x04);
 199   2                               TxData(0x00);
 200   2                               TxData(0x04);
 201   2                               TxData(0xfd);
 202   2                               spk(1);
 203   2                               break;
 204   2                           default: break;
 205   2                        } //end switch
 206   1      
 207   1      }
 208          
 209          
 210          
 211          void spk(uchar x)
 212          {
 213   1      
 214   1      	while(x--)
 215   1      	{
 216   2               BEEP=0;
 217   2               green=0;
 218   2               Delay(100);
 219   2               BEEP=1;
 220   2               green=1;
 221   2               Delay(50);
 222   2      
 223   2              }
 224   1      }
 225          
 226          void spkl(uchar x)
 227          {
 228   1      
 229   1      	while(x--)
 230   1      	{
 231   2               BEEP=0;
 232   2               green=0;
 233   2               Delay(255);
 234   2               BEEP=1;
 235   2               green=1;
 236   2               Delay(200);
 237   2              }
 238   1      }
 239          
 240          //精确的384us延时,此延时可以不严格,但要大于256us小于512us
 241          void Delay384us()
C51 COMPILER V6.02  MAIN                                                                   01/16/2009 14:50:25 PAGE 5   

 242          {
 243   1      	uchar i=DELAY_VAL;
 244   1      	while(i--);
 245   1      }
 246          void readid()
 247          {     uchar i,j,k;
 248   1                      SN=Read_Card();
 249   1      		if(SN)
 250   1      		{  ///FE 00 00 01 04 01 02 03 04 12 FD
 251   2      
 252   2                        s=&SN;
*** WARNING C182 IN LINE 252 OF F:\5000\JOP\洗车计费\C\2\MAIN.C: pointer to different objects
 253   2                        for(i=0;i<4;i++)
 254   2                          {
 255   3                           buf[10+i]=*s;
 256   3                           s++;
 257   3                           }
 258   2                        SN=Read_Card();
 259   2      
 260   2                        if(SN==0)SN=Read_Card();
 261   2      
 262   2                        if(SN==0)SN=Read_Card();
 263   2      
 264   2                        if(SN==0)SN=Read_Card();
 265   2      
 266   2                        if(SN==0)SN=Read_Card();
 267   2      		  if(SN)
 268   2      		  {  s=&SN;
*** WARNING C182 IN LINE 268 OF F:\5000\JOP\洗车计费\C\2\MAIN.C: pointer to different objects
 269   3                           for(i=0;i<4;i++)
 270   3                            {
 271   4                             buf[i]=*s;
 272   4                             s++;
 273   4                             }
 274   3                           for(i=0;i<4;i++)
 275   3                            {
 276   4                             if (buf[i]!=buf[10+i])return;
 277   4                             }
 278   3                           TxData(0xfe);
 279   3                           TxData(0x00);
 280   3                           TxData(0x00);
 281   3                           TxData(0x01);
 282   3                           TxData(0x04);
 283   3                           k=0x05;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -