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

📄 main.lst

📁 C8051F020+RA8835 I/O口控制 中英文混合显示
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V7.20   MAIN                                                                  08/19/2008 11:47:51 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\c51.exe main.c DB OE

line level    source

   1          #include "c8051f020.h"
   2          #include "variable.h"
   3          
   4          Uchar code StrForMixed[]={"08/08/12 16:11"}; //测试字符串
   5          Uchar code StrForSample1[]={"Let our to look program in Graphics\n"}; 
   6          
   7          extern void LcmInition( void );                                                                                                                                 //LCDRA8835初始化函数
   8          extern void LcmClear( void );                                                                                                                                           //清屏函数
   9          extern Uchar dprintf(Uchar x,Uchar y, char code *ptr, Uchar att) ;//图形方式下中英文混合显示函数
  10          extern Uchar hprintf(Uchar x,Uchar y, char code *ptr, Uchar att) ;//图形方式下中英文混合显示函数
  11          extern void LcmRest( void );
  12          extern void LcmTest( void );
  13          extern Uchar hprintf(Uchar x,Uchar y, char code *ptr, Uchar att);
  14          extern void printfUpDown(Uchar x,Uchar y, Uchar flag, Uchar att) ;
  15          extern void printfLeftRight(Uchar x,Uchar y, Uchar flag, Uchar att);
  16          extern void printlcd_single(void);
  17          extern void printlcd_car_show(Uchar x,Uchar y, Uchar * pcar, Uchar att);
  18          extern void printlcd_char(Uchar ascii);
  19          extern void lcd_CSR(Uchar flag);
  20          extern void Locatexy(Uchar x,Uchar y, Uchar attribs);
  21          /*
  22          extern void WriteCommand( Uchar CommandByte );
  23          extern void WriteData( Uchar dataW );
  24          extern char code ASC_MSK[96*16];
  25          extern struct typFNT_GB16 code Cdotlib[];
  26          */
  27          /*===================================== 
  28          ** 函数名称: Delay
  29          ** 功能描述: 延时函数
  30          ** 输入参数: 延时的时间
  31          **
  32          ** 输出参数: 无
  33          **
  34          ** 全局变量: 无
  35          ** 调用模块:  
  36          **---------------------------------------
  37          ** 作  者:      wjf
  38          ** 日  期:      2008/07/31
  39          ======================================*/  
  40          void Delay( Uint tt ) { 
  41   1              while( tt-- ); 
  42   1      } 
  43          
  44          /*========================================================= 
  45          ** 函数名称: init_cpu
  46          ** 功能描述: C8051F020初始化函数   具体初始化内容参考行注释
  47          ** 输入参数: 无
  48          **
  49          ** 输出参数: 无
  50          **
  51          ** 全局变量: 无
  52          ** 调用模块:  
  53          **--------------------------------------------------------
  54          ** 作  者:      wjf
  55          ** 日  期:      2008/07/31
C51 COMPILER V7.20   MAIN                                                                  08/19/2008 11:47:51 PAGE 2   

  56          ==========================================================*/ 
  57          void init_cpu(void) {
  58   1      //晶振设置 
  59   1              Uint i;
  60   1              OSCXCN = 0x67;                                                  // start external oscillator with 11.0592Mhz
  61   1              for (i=0; i < 256; i++) ;                  // Wait for osc. to start up
  62   1              while ((OSCXCN & 0x80)==0) ;          // Wait for crystal osc. to settle
  63   1              OSCICN = 0x88;                                                  // select external oscillator as SYSCLK
  64   1              EA = 0;
  65   1              WDTCN = 0xDE; // 屏蔽看门狗
  66   1                      // 写0XDE和写0XAD必须发生在4个时钟周期之内
  67   1              WDTCN = 0xAD;
  68   1              
  69   1      //复位源设置
  70   1              RSTSRC= 0x00; // 复位源寄存器设置
  71   1              
  72   1      //交叉开关配制:UART0- RX0、TX0
  73   1              XBR0 = 0x04;
  74   1              XBR1 = 0x00;
  75   1              XBR2 = 0x84;    // 交叉开关使能
  76   1              
  77   1      //P0、P1、P2、P3、P4、P5、P6、P7端口设置
  78   1      //通过设置输出方式为漏极开路并向端口数据寄存器中的相映位写1可将端口引脚配置为输入
  79   1      
  80   1              P0MDOUT = 0x00; // P0口为漏极开路输出
  81   1      
  82   1      //      P1MDIN  = 0xff; // P1口用作数字输入输出
  83   1              P1MDOUT = 0xff; // P1.0-P1.7设置为推挽输出
  84   1      
  85   1      
  86   1              P2MDOUT = 0x00; // P2口设置为漏极开路输出
  87   1                        // P2.0 - P2.4做输入
  88   1              P3MDOUT = 0xff; // P3口为推挽输出
  89   1        
  90   1              P74OUT  = 0xff; // P4 - P7口为推挽输出
  91   1      
  92   1      //UART0设置
  93   1              SCON0  = 0x40;  // 设置UART0工作在方式1,8位UART
  94   1              T2CON = 0x34;   // 用定时器2产生串口波特率   定时器2  16位自动重装  启动定时器2
  95   1              RCAP2H = 0xff;  // Timer 2 Capture Register High Byte
  96   1              RCAP2L = 0xdc;  // Timer 2 Capture Register Low Byte    
  97   1              TH2 = 0xff;     // Timer 2 High Byte    
  98   1              TL2 = 0xdc;     // Timer 2 Low Byte
  99   1                        // 使用11.0592MHz晶振,波特率设置为 9600 bps
 100   1                        /*                                          SYSCLK
 101   1                                 波特率=---------
 102   1                                                       32×(65536-[RCAP2H:RCAP2L])
 103   1                        */
 104   1      //UART1设置
 105   1              SCON1  = 0x40;  // 设置UART1工作在方式1,8位UART
 106   1              T4CON = 0x34;   // 用定时器4产生串口波特率   定时器2  16位自动重装
 107   1              RCAP4H = 0xff;  // Timer 4 Capture Register High Byte
 108   1              RCAP4L = 0xdc;  // Timer 4 Capture Register Low Byte    
 109   1              TH4 = 0xff;     // Timer 4 High Byte    
 110   1              TL4 = 0xdc;     // Timer 4 Low Byte
 111   1                        // 使用11.0592MHz晶振,波特率设置为 9600 bps
 112   1                        /*                                          SYSCLK
 113   1                                 波特率=---------
 114   1                                                       32×(65536-[RCAP2H:RCAP2L])
 115   1                        */
 116   1      //中断设置
 117   1      //      EA=0;
C51 COMPILER V7.20   MAIN                                                                  08/19/2008 11:47:51 PAGE 3   

 118   1      //-----------------------------------------------
 119   1      }
 120          
 121          /*========================================================= 
 122          ** 函数名称: config
 123          ** 功能描述: C8051F020初始化函数   具体初始化内容参考行注释
 124          ** 输入参数: 无
 125          **
 126          ** 输出参数: 无
 127          **
 128          ** 全局变量: 无
 129          ** 调用模块:  
 130          **--------------------------------------------------------
 131          ** 作  者:      FL
 132          ** 日  期:      
 133          ==========================================================*/ 
 134          void config (void) {
 135   1      
 136   1      //Local Variable Definitions
 137   1          int n = 0;
 138   1      
 139   1              WDTCN = 0x07;   // Watchdog Timer Control Register
 140   1          WDTCN = 0xDE;   // Disable WDT
 141   1          WDTCN = 0xAD;
 142   1        
 143   1              XBR0 = 0x05;    // XBAR0: Initial Reset Value
 144   1              XBR1 = 0x00;    // XBAR1: Initial Reset Value
 145   1              XBR2 = 0x44;    // XBAR2: Initial Reset Value
 146   1      
 147   1          P0MDOUT = 0x11; // Output configuration for P0 
 148   1          P1MDOUT = 0x00; // Output configuration for P1 //全部漏极开路
 149   1              P1=0xff;                        
 150   1      
 151   1          P2MDOUT = 0xc1; // Output configuration for P2 //除P2.7,6,0是其余漏极开路
 152   1              P2=0xff;        
 153   1      
 154   1          P3MDOUT = 0x00; // Output configuration for P3 
 155   1              P3=0xff;        
 156   1      
 157   1          P74OUT = 0xf0;  // Output configuration for P漏极开路
 158   1              P4=0xff;
 159   1              P5=0xff;
 160   1      
 161   1          P1MDIN = 0xFF;  // Input configuration for P1       //输入方式全部为数字
 162   1      
 163   1          EMI0CF = 0x28;    // External Memory Configuration Register
 164   1      
 165   1                                              
 166   1      //----------------------------------------------------------------
 167   1      // Oscillator Configuration
 168   1      //----------------------------------------------------------------
 169   1      
 170   1              OSCXCN = 0x67;  // EXTERNAL Oscillator Control Register 
 171   1          for (n = 0; n < 255; n++) ;            // wait for osc to start
 172   1          while ( (OSCXCN & 0x80) == 0 );        // wait for xtal to stabilize
 173   1      
 174   1              OSCICN = 0x0C;  // Internal Oscillator Control Register
 175   1      
 176   1              
 177   1      //----------------------------------------------------------------
 178   1      // UART Configuration
 179   1      //----------------------------------------------------------------
C51 COMPILER V7.20   MAIN                                                                  08/19/2008 11:47:51 PAGE 4   

 180   1      
 181   1          SCON0 = 0x50;       // Serial Port Control Register
 182   1          SCON0 &= 0xFC;      //clear interrupt pending flags
 183   1          PCON = 0x00;        // Power Control Register
 184   1          SCON1 = 0x50;       // Serial Port 1 Control Register   
 185   1      
 186   1      
 187   1      
 188   1      //----------------------------------------------------------------
 189   1      // SMBus Configuration
 190   1      //----------------------------------------------------------------
 191   1      
 192   1              SMB0CN = 0x40;  // SMBus Control Register
 193   1              SMB0ADR = 0x00; // SMBus Address Register
 194   1              SMB0CR = 0xc9;  // SMBus Clock Rate Register
 195   1      
 196   1      
 197   1      //----------------------------------------------------------------
 198   1      // Timer Configuration
 199   1      //----------------------------------------------------------------
 200   1      
 201   1          CKCON = 0x10;   // Clock Control Register
 202   1          TH0 = 0x00;     // Timer 0 High Byte
 203   1          TL0 = 0x00;     // Timer 0 Low Byte
 204   1          TH1 = 0xDc;     // Timer 1 High Byte
 205   1          TL1 = 0x00;     // Timer 1 Low Byte
 206   1          TMOD = 0x20;    // Timer Mode Register
 207   1          TCON = 0x40;    // Timer Control Register 
 208   1      
 209   1      //----------------------------------------------------------------
 210   1      // Reset Source Configuration
 211   1      //
 212   1      // Bit 7  | Bit 6  | Bit 5  | Bit 4  | Bit 3 | Bit 2 | Bit 1 | Bit 0
 213   1      //------------------------------------------------------------------     
 214   1      //    R  |   R/W  |  R/W   |  R/W   |   R   |   R   |  R/W  |  R
 215   1      //------------------------------------------------------------------
 216   1      //  JTAG  |Convert | Comp.0 | S/W    | WDT   | Miss. | POR   | HW
 217   1      // Reset  |Start   | Reset/ | Reset  | Reset | Clock | Force | Pin
 218   1      // Flag   |Reset/  | Enable | Force  | Flag  | Detect| &     | Reset
 219   1      //        |Enable  | Flag   | &      |       | Flag  | Flag  | Flag
 220   1      //        |Flag    |        | Flag   |       |       |       |
 221   1      //------------------------------------------------------------------
 222   1      // NOTE! : Comparator 0 must be enabled before it is enabled as a 
 223   1      // reset source.
 224   1      //
 225   1      // NOTE! : External CNVSTR must be enalbed through the crossbar, and
 226   1      // the crossbar enabled prior to enabling CNVSTR as a reset source 
 227   1      //------------------------------------------------------------------
 228   1      
 229   1              RSTSRC = 0x00;  // Reset Source Register
 230   1      
 231   1      
 232   1      //----------------------------------------------------------------
 233   1      // Interrupt Configuration
 234   1      //----------------------------------------------------------------
 235   1      
 236   1          IE = 0x00;          //Interrupt Enable      //总中断允许,UART0中断允许
 237   1          IP = 0x00;          //Interrupt Priority
 238   1          EIE1 = 0x00;        //Extended Interrupt Enable 1
 239   1          EIE2 = 0x00;        //Extended Interrupt Enable 2  //外部中断6允许
 240   1          EIP1 = 0x00;        //Extended Interrupt Priority 1
 241   1          EIP2 = 0x00;        //Extended Interrupt Priority 2
C51 COMPILER V7.20   MAIN                                                                  08/19/2008 11:47:51 PAGE 5   

 242   1      
 243   1              P3IF=0x00;                      //P3.6下降沿中断
 244   1              EIP1=0x02;
 245   1      
 246   1      // other initialization code here...
 247   1      
 248   1      
 249   1      
 250   1      }   //End of config
 251          
 252          
 253          /*====================================================== 
 254          ** 函数名称: display_plane_menu
 255          ** 功能描述: 显示5Q设备的开机画面
 256          ** 输入参数: 无
 257          **
 258          ** 输出参数: 无
 259          **
 260          ** 全局变量: 无
 261          ** 调用模块:  
 262          **----------------------------------------------------
 263          ** 作  者:      wjf
 264          ** 日  期:      2008/08/08
 265          ======================================================*/ 
 266          void display_plane_menu(void)                   //开机菜单
 267          {
 268   1              LcmClear();
 269   1              dprintf(4,0x10, "欢迎使用-5V型汽车排放气体分析仪",0);
 270   1              dprintf(15,0x30, "版本:007",0);
 271   1              
 272   1              hprintf(3,0x60, "天津圣威科技发展有限公司",0);
 273   1              dprintf(12,0x85, "让世界更美丽,让空气更清新!",0);
 274   1              dprintf(3,0xd0, "网址:www.shengweiscience.com",0);
 275   1              
 276   1      }
 277          
 278          /*====================================================== 
 279          ** 函数名称: display_main_menu
 280          ** 功能描述: 主菜单
 281          ** 输入参数: 无
 282          **
 283          ** 输出参数: 无

⌨️ 快捷键说明

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