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

📄 51.lst

📁 一个基于51单片机的PFM型开关电源代码
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.02   51                                                                    08/01/2007 23:05:27 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE 51
OBJECT MODULE PLACED IN 51.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE 51.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include"intrins.h"
   2          #include"AT89X51.H"
   3          
   4          
   5          
   6          #define uchar unsigned char
   7          #define uint unsigned int
   8          
   9          
  10          #define LCD_RS P2_7
  11          #define LCD_RW P2_6
  12          #define LCD_EN P2_5
  13          #define LCD_DATA  P0
  14          #define bflag  P0_7
  15          
  16          /*函数原型*/
  17          void init(void);            /*初始化硬件*/
  18          void LCD_init(void);        /*初始化LCD*/
  19          void LCD_cmd(uchar cmd);    /*写入控制命令*/
  20          void delay(uint dly);
  21          void setxy(char x,char y);
  22          void LCD_string(char *s);
  23          void LCD_char(char chr);/*写入要显示的字符*/
  24          void wait_until_ready(void); /*检测忙标志,忙则等待*/
  25          uchar freqH;
  26          uchar freqL;
  27          /*4行4列的按键编码*/
  28          uchar list[4][4]={
  29            0x00,0x01,0x02,0x03,
  30            0x04,0x05,0x06,0x07,
  31            0x08,0x09,0x0a,0x0b,
  32            0x0c,0x0d,0x0e,0x0f
  33          };
  34          /* 0    1    2    3
  35             4    5    6    7
  36             8    9    A    B
  37             C    D    E    F
  38          */
  39          
  40          //A确认键
  41          //B启动频率输出键
  42          //C停止频率输出健
  43          //D频率步进增加键
  44          //E频率步进减少键
  45          
  46          
  47          
  48          /*初始化硬件*/
  49          void init(void) 
  50          {
  51   1        IE=0x88;      //10001000b允许TIMER1中断
  52   1        IP=0x08;        //00001000b定义定时器为高优先级中断
  53   1        TMOD=0x10;    //定时器1采用方式1
  54   1        TH1=0xfe;   //初始化输出频率1kHz
  55   1        TL1=0x0c;
C51 COMPILER V8.02   51                                                                    08/01/2007 23:05:27 PAGE 2   

  56   1        freqH=0xfe;
  57   1        freqL=0x16;
  58   1      
  59   1      }
  60          
  61          void LCD_init(void)
  62          { 
  63   1              LCD_cmd(0x38);/*8位数据,2行显示*/   
  64   1              LCD_cmd(0x08);/*显示关闭*/
  65   1              LCD_cmd(0x06);/*写入数据后光标右移*/   
  66   1              LCD_cmd(0x0f);/*显示开,显示光标,光标闪烁*/
  67   1              LCD_cmd(0x01);/*清屏*/
  68   1              setxy(1,1);
  69   1          LCD_string("Press b to start");
  70   1      
  71   1      }
  72          
  73          
  74          void LCD_cmd(uchar cmd)  
  75          {   
  76   1                
  77   1                LCD_RS=0;                   
  78   1                LCD_RW=0; 
  79   1                LCD_DATA=cmd;
  80   1                LCD_EN=1;  
  81   1                delay(20);
  82   1                LCD_EN=0;
  83   1            wait_until_ready();
  84   1      }
  85          
  86          void LCD_char(char chr)/*写入要显示的字符*/
  87          {   LCD_RS=1;   
  88   1          LCD_RW=0;   
  89   1              LCD_DATA=chr;   
  90   1              LCD_EN=1;
  91   1          delay(20);
  92   1              LCD_EN=0;
  93   1              wait_until_ready();
  94   1      }
  95          void wait_until_ready(void) /*检测忙标志,忙则等待*/
  96          {   
  97   1          LCD_RS=0;   
  98   1          LCD_RW=1;   
  99   1              LCD_DATA=0x0ff;   
 100   1              LCD_EN=1;   
 101   1              delay(20);   
 102   1              do{ACC=LCD_DATA;} 
 103   1              while(bflag==1);  
 104   1              LCD_EN=0;       
 105   1      }
 106          
 107          /*设定显示位置,行x=1或2,列y=1~16的任意整数*/
 108          void setxy(char x,char y) 
 109          {    
 110   1              char temp;    
 111   1              if(x==1)  
 112   1                      {
 113   2                  temp=0x80+y-1;  
 114   2                              LCD_cmd(temp);  
 115   2                      } 
 116   1              else  
 117   1                      {
C51 COMPILER V8.02   51                                                                    08/01/2007 23:05:27 PAGE 3   

 118   2                              temp=0xC0+y-1;  
 119   2                              LCD_cmd(temp);  
 120   2                      }
 121   1      }
 122          
 123          void LCD_string(char *s)
 124          { 
 125   1              for(;*s!='\0';s++)
 126   1              LCD_char(*s);
 127   1      }
 128          
 129          /*延时*/
 130          void delay(uint dly)
 131                  { uint j;
 132   1                      for(j=0;j<dly;j++);
 133   1              }
 134          
 135          
 136          void main(void)
 137          {uint  i1;
 138   1       uint  i2;
 139   1       uint  i=0;
 140   1       uint  j;
 141   1       uint  start=0;
 142   1       uchar Key;
 143   1       uchar Keycode[2]={0,1};
 144   1       uchar Keydata;
 145   1       uchar temp1;
 146   1       uint Tinit;
 147   1       float freq=1;
 148   1       init(); 
 149   1       LCD_init();
 150   1      while(1)
 151   1      {
 152   2              P3_3=0;
 153   2              P3_2=0;
 154   2              P3_1=0;
 155   2              P3_0=0;
 156   2      
 157   2        if(P3_4==0||P3_5==0||P3_6==0||P3_7==0)   //初次判断有键
 158   2              delay(1000);
 159   2      else 
 160   2        continue;
 161   2              P3_3=0;
 162   2              P3_2=0;
 163   2              P3_1=0;
 164   2              P3_0=0;
 165   2      
 166   2        if(P3_4==0||P3_5==0||P3_6==0||P3_7==0)  //第二次判断有键
 167   2              {       
 168   3                      delay(1000);
 169   3              if(P3_4==0)
 170   3                              i1=0;
 171   3                      else if(P3_5==0)
 172   3                              i1=1;
 173   3                      else if(P3_6==0)
 174   3                              i1=2;
 175   3                      else if(P3_7==0)
 176   3                              i1=3;
 177   3                                      
 178   3              }
 179   2      else 
C51 COMPILER V8.02   51                                                                    08/01/2007 23:05:27 PAGE 4   

 180   2              continue;
 181   2      
 182   2              P3_3=0;
 183   2              P3_2=0;
 184   2              P3_1=0;
 185   2              P3_0=0;
 186   2      if(P3==0xe0||P3==0xd0||P3==0xb0||P3==0x70)
 187   2              {       
 188   3                      delay(1000);
 189   3              if(P3_4==0)
 190   3                              i2=0;
 191   3                      else if(P3_5==0)
 192   3                              i2=1;
 193   3                      else if(P3_6==0)
 194   3                              i2=2;
 195   3                      else if(P3_7==0)
 196   3                              i2=3;
 197   3                              
 198   3              }

⌨️ 快捷键说明

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