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

📄 fm1702.lst

📁 FM1702SL.rar
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V7.50   FM1702                                                                10/16/2007 16:33:32 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE FM1702
OBJECT MODULE PLACED IN FM1702.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE FM1702.c BROWSE DEBUG OBJECTEXTEND CODE

line level    source

   1          /****************************************************************************
   2          * File :  main.c                                                            *
   3          * COPYRIGHT BY HUOYAN LTD.COMPANY                                           *
   4          * Version:      V1.3                                                                    *
   5          *                                                                           *
   6          * Created:      18.10.2005                                                  *
   7          * Last Change:  21.10.2005                                                  *
   8          *                                                                           *
   9          * Author:       NIL                                                         *
  10          *                                                                           *
  11          * Compiler:     KEIL C51 V7.10                                              *
  12          *                                                                           *
  13          * Description:  AT89S52-Firmware for FM1702 Demo Serial Reader             *
  14          *                                                                           *
  15          ****************************************************************************/
  16          #define __SRC
  17          #include "main.h"
  18          #undef  __SRC
  19          
  20          #include <string.h>
  21          #include <stdio.h>
  22          #include <absacc.h>
  23          #include <intrins.h>
  24          
  25          #include "sm5964.h"
  26          #include "FM1702.h"
  27          
  28          
  29          #define uchar   unsigned char
  30          #define uint    unsigned int
  31          //pin define  mcu控制管脚定义
  32          
  33          
  34          
  35          sbit RF_NSS             =       P1^4;
  36          sbit RF_MISO    =       P1^3;
  37          sbit RF_MOSI    =       P1^2;
  38          sbit RF_SCK             =       P1^1;
  39          
  40          sbit RF_RST     =   P3^5;       //由高变低时启动内部复位程序    
  41          
  42          sbit CARD_LED   =       P3^3;
  43          sbit SPEAKER    =   P3^4; 
  44          
  45          sbit LCD_CS =   P2^4;
  46          sbit LCD_RD =   P2^5;
  47          sbit LCD_WR =   P2^6;
  48          sbit LCD_DATA = P2^7;
  49          
  50          //sfr P4 = 0xD8;
  51          sbit key = P4^3;
  52          // Release Number of the Firmware
  53          //uchar code HY_Rel[] = "\n\r HUO YAN V1.3 21.Oct.05 \n\r";
  54          // Module address
  55          // uchar code addr[]="0xff";
C51 COMPILER V7.50   FM1702                                                                10/16/2007 16:33:32 PAGE 2   

  56          
  57          ///////////////////////////////////////////////////////////////////////
  58          // 主函数
  59          ///////////////////////////////////////////////////////////////////////
  60          void main(void)
  61          {       //设置变量
  62   1          uchar baud;
  63   1          if(!P2_0)           //P2.0=0则进入ISP服务程序
  64   1              {
  65   2               SPEAKER = 0;
  66   2               GoToIsp();  
  67   2              }       
  68   1      
  69   1          InitSystem();     //初始化系统
  70   1          while (1)
  71   1          {
  72   2      
  73   2                      //检查命令标志  
  74   2                  if (CmdValid)               //if LEVEL 1
  75   2                  {
  76   3                          CmdValid = FALSE;
  77   3                          if(RevBuffer[0]==11)         //if LEVEL 2   
  78   3                          {
  79   4                              RevBuffer[2]=RevBuffer[1];
  80   4                              RevBuffer[0]=1;         
  81   4                              RevBuffer[1]=0;
  82   4                              CALL_isr_UART();                //equal to 'SETB TI', defined in main.h
  83   4                              SPEAKER=0;              //开蜂鸣器和指示灯
  84   4                              CARD_LED=ON;
  85   4                                      delay_10ms(RevBuffer[2]);
  86   4                              SPEAKER=1;
  87   4                      CARD_LED=OFF;
  88   4                          }
  89   3                      else if(RevBuffer[0]==13)   //设置通讯波特率 //if LEVEL 2
  90   3                      {
  91   4                              switch(RevBuffer[1])
  92   4                              {
  93   5                                      case 0:
  94   5                                              baud=BAUD_9600;
  95   5                                              break;
  96   5                                      case 1:
  97   5                                              baud=BAUD_14400;
  98   5                                              break;
  99   5                                      case 2:
 100   5                                              baud=BAUD_19200;
 101   5                                              break;
 102   5                                      case 3:
 103   5                                              baud=BAUD_28800;
 104   5                                              break;
 105   5                                      case 4:
 106   5                                              baud=BAUD_38400;
 107   5                                              break;
 108   5                                      case 5:
 109   5                                              baud=BAUD_57600;
 110   5                                              break;
 111   5                                      case 6:
 112   5                                              baud=BAUD_115200;
 113   5                                              break;
 114   5                                      default:
 115   5                                              baud=BAUD_19200;
 116   5                                              break;
 117   5                              }       //switch body                   
C51 COMPILER V7.50   FM1702                                                                10/16/2007 16:33:32 PAGE 3   

 118   4                              RevBuffer[0]=1;         //contact
 119   4                              RevBuffer[1]=0;
 120   4                              CALL_isr_UART();
 121   4                              delay_10ms(5);                  
 122   4                              TR1   = 0;
 123   4                              TH1   = baud;
 124   4                              TL1   = TH1;
 125   4                              delay_10ms(2);
 126   4                              TR1   = TRUE;
 127   4                      }//if LEVEL 2
 128   3                      else
 129   3                      {
 130   4                              cmd_process();        // 进入IC卡处理程序
 131   4                              CALL_isr_UART();
 132   4                      }
 133   3              }
 134   2          }//while循环体
 135   1      }//main函数
 136          ///////////////////////////////////////////////////////////////////////
 137          // 系统初始化
 138          ///////////////////////////////////////////////////////////////////////
 139          void InitSystem(void)
 140          {
 141   1          RF_NSS=1;           
 142   1              RF_RST=0;       
 143   1              SCONF=0x03;     //SM5964A system control register: enable on chip 1K RAM and disable ALE output
 144   1              ET2 = 0;        //Timer 2 disabled
 145   1              T2CON = 0x04;   //start Timer 2(internal timer, auto reload)
 146   1          PCON = 0x00;    //baud rate double    
 147   1          SCON = 0x70;    //UART mode 1, enable receive, if No valid stop bit, RI not activated.
 148   1      
 149   1              //TMOD = 0x22;
 150   1          TMOD = 0x21;    //Timer 1 8bit auto reload TR1 control
 151   1                                              //Timer 0 16bit TR0 control
 152   1      
 153   1              TH1   = BAUD_19200;  //默认波特率
 154   1              TL1   = TH1;
 155   1              TR1   = TRUE;        // 波特率发生器
 156   1              
 157   1              TH0 = 0x60;
 158   1          TL0 = 0x60;
 159   1          TR0 = 0;    //Timer 0 doesn't run
 160   1          
 161   1          ET0=0;
 162   1              ET1=0;
 163   1              EA=1;
 164   1              EX0=1;
 165   1              IT0 = 1;        
 166   1              TR2=0;
 167   1              ES = TRUE;    //enable UART interrupt
 168   1              CmdValid=0;     //flag initiation
 169   1                                                      //喇叭和指示灯测试
 170   1      //      SPEAKER=0;
 171   1      //  CARD_LED=OFF;       
 172   1      //      delay_10ms(30);
 173   1              SPEAKER=0;
 174   1          CARD_LED=ON;
 175   1              delay_10ms(10);
 176   1              SPEAKER=1;
 177   1          CARD_LED=OFF;
 178   1                
 179   1              Init_FM1702(0);                 
C51 COMPILER V7.50   FM1702                                                                10/16/2007 16:33:32 PAGE 4   

 180   1      
 181   1      }
 182          ///////////////////////////////////////////////////////////////////////
 183          // 串口接收和发送中断
 184          ///////////////////////////////////////////////////////////////////////
 185          void isr_UART(void) interrupt 4 using 1
 186          {
 187   1          uchar len, i;
 188   1              unsigned int j=0;
 189   1              
 190   1              if(RI)
 191   1              {               
 192   2                      len=SBUF;
 193   2                      RI=0;   
 194   2                      for(i=0;i<len;i++)
 195   2                      {
 196   3                              while(!RI)
 197   3                              {
 198   4                                      j++;
 199   4                                      if(j>1000)
 200   4                                      {
 201   5                                          break;
 202   5                                      }
 203   4                              }
 204   3                              if(j<1000)
 205   3                              {
 206   4                                      RevBuffer[i]=SBUF;
 207   4                                      RI=0;
 208   4                                      j=0;
 209   4                              }
 210   3                              else
 211   3                              {
 212   4                                  break;
 213   4                              }
 214   3                      }
 215   2                      if(i==len)
 216   2                      {
 217   3                              REN=0;
 218   3                              CmdValid=1;
 219   3                      }
 220   2              }
 221   1              else if(!RI && TI)
 222   1              {
 223   2                      TI=0;
 224   2                      len=RevBuffer[0];
 225   2                      for(i=0;i<len+1;i++)
 226   2                      {
 227   3                              SBUF=RevBuffer[i];
 228   3                              while(!TI);
 229   3                              TI=0;                   
 230   3                      }
 231   2                      REN=1;
 232   2              }
 233   1      }
 234          ///////////////////////////////////////////////////////////////////////
 235          // IC卡处理函数
 236          ///////////////////////////////////////////////////////////////////////
 237          void cmd_process(void)
 238          {
 239   1          uchar cmd;
 240   1          uchar status;
 241   1              
C51 COMPILER V7.50   FM1702                                                                10/16/2007 16:33:32 PAGE 5   

 242   1              cmd = RevBuffer[0];
 243   1              switch(cmd)
 244   1              {
 245   2                      case 1:     // Halt the card     //终止卡的操作
 246   2                              status=MIF_Halt();                      
 247   2                              RevBuffer[0]=1;
 248   2                              RevBuffer[1]=status;
 249   2                              break;                  
 250   2                      case 2:     
 251   2                      //MIF_Halt();     //RF_CMD_REQUEST_ALL=0x52,request all
 252   2                      status = Request(RF_CMD_REQUEST_ALL);   //RF_CMD_REQUEST_STD=0x26, request Idle
 253   2                      if(status != FM1702_OK)
 254   2                      {

⌨️ 快捷键说明

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