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

📄 ex6-2.lst

📁 嵌入式-C语言程序设计C语言程序设计C语言程序设计
💻 LST
字号:
C51 COMPILER V8.06   EX6_2                                                                 07/18/2007 20:30:13 PAGE 1   


C51 COMPILER V8.06, COMPILATION OF MODULE EX6_2
OBJECT MODULE PLACED IN ex6-2.OBJ
COMPILER INVOKED BY: D:\Program Files\Keil\C51\BIN\C51.EXE ex6-2.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*
   2          标题:范例 6-2
   3          版本:1.0
   4          Target:89S51
   5          程序描述:数字电压表*/
   6          /*  **************************************************** */ 
   7          #include <REGX51.H>
   8          #define  TIMER0_COUNT 0xDC11   /* 10000h-(11,059,200/(12*
   9                                            FREQ))-17 */
  10          /* LCD command */
  11          #define  DISPLAY_ON      56
  12          #define  CURSOR_OFF      12
  13          #define  CURSOR_RIGHT    6
  14          #define  CLEAR           1
  15          #define  CURSOR_HOME     2
  16          #define  GOTO_LINE_2     192
  17          #define  GOTO_LINE_1     128
  18          /* LCD control lines */
  19          #define  ENABLE          1
  20          #define  DISABLE         0
  21          #define  READ            1
  22          #define  WRITE           0
  23          #define  COMMAND         0
  24          #define  DATA            1
  25          #define  rs              P3_5
  26          #define  rw              P3_4
  27          #define  enable          P3_3
  28          #define  adc_in          P0
  29          #define  adc_rd          P2_0
  30          #define  adc_wr          P2_1
  31          static unsigned timer0_tick;
  32          const char  int2char[]="0123456789";
  33          void delay_2ms(void)  {                   /* 时间延迟函数 */
  34   1        unsigned char i,j;                      /* 延迟2 ms   */
  35   1           for (i=0;i<3;i++)
  36   1                  for(j=0;j<255;j++)
  37   1                  ;
  38   1      }
  39          void write_LCD_command(unsigned command)
  40          {
  41   1           rw=WRITE;
  42   1           rs=COMMAND;
  43   1           enable=ENABLE;
  44   1           P1=command;
  45   1           enable=DISABLE;
  46   1           rs=1;
  47   1           rw=1;
  48   1           delay_2ms();
  49   1      }
  50          void write_LCD_data(unsigned LCDdata)
  51          {
  52   1           rw=WRITE;
  53   1           rs=DATA;
  54   1           enable=ENABLE;
  55   1           P1=LCDdata;
C51 COMPILER V8.06   EX6_2                                                                 07/18/2007 20:30:13 PAGE 2   

  56   1           enable=DISABLE;
  57   1           rs=0;
  58   1           rw=1;
  59   1           delay_2ms();
  60   1      }
  61          void set_LCD(void)
  62          {
  63   1           write_LCD_command(DISPLAY_ON);
  64   1           write_LCD_command(CURSOR_OFF);
  65   1           write_LCD_command(CURSOR_RIGHT);
  66   1      }
  67          void clear_LCD()
  68          {
  69   1           write_LCD_command(CLEAR);
  70   1           write_LCD_command(CURSOR_HOME);
  71   1      }
  72          display_LCD_string(char *p)
  73          {
  74   1           while(*p)
  75   1           {
  76   2                   write_LCD_data(*p);
  77   2                   p++;
  78   2           }
  79   1      }
  80          void gotoxy(unsigned x,unsigned y)
  81          {
  82   1           if(x==1)
  83   1                   write_LCD_command(GOTO_LINE_1+y);
  84   1           else
  85   1           write_LCD_command(GOTO_LINE_2+y);
  86   1      }
  87          void display_LCD_number(unsigned char number)
  88          {
  89   1           unsigned char x,y,i=2;
  90   1           int z;
  91   1           z=(int) number;
  92   1           z=z<<1;
  93   1           x=z/10;
  94   1           y=z-x*10;
  95   1           gotoxy(2,3);
  96   1           write_LCD_data(int2char[y]);
  97   1           z=x;
  98   1           x=z/10;
  99   1           y=z-x*10;
 100   1           gotoxy(2,2);
 101   1           write_LCD_data(int2char[y]);
 102   1           gotoxy(2,1);
 103   1           display_LCD_string(".");
 104   1           z=x;
 105   1           x=z/10;
 106   1           y=z-x*10;
 107   1           gotoxy(2,0);
 108   1           write_LCD_data(int2char[y]);
 109   1           gotoxy(2,4);
 110   1           display_LCD_string("Volt");
 111   1      }
 112          static void timer0_isr(void) interrupt 1 using 1
 113          {
 114   1        TR0=0;
 115   1        TL0=(TIMER0_COUNT & 0x00FF);
 116   1        TH0=(TIMER0_COUNT >> 8);
 117   1        TR0=1;
C51 COMPILER V8.06   EX6_2                                                                 07/18/2007 20:30:13 PAGE 3   

 118   1        timer0_tick++;
 119   1        if (timer0_tick==200) {
 120   2              adc_wr=0;
 121   2              timer0_tick=0;
 122   2              adc_wr=1;       
 123   2        }             
 124   1      }
 125          static void int0_isr(void) interrupt 0 using 0
 126          {
 127   1              unsigned char voltage;
 128   1              adc_in=0xFF;
 129   1              adc_rd=0;
 130   1              voltage=adc_in;
 131   1              voltage=voltage <<1;
 132   1              adc_rd=1;
 133   1              gotoxy(2,0);
 134   1              display_LCD_number(voltage);    
 135   1      }
 136          static void timer0_initialize(void)
 137          {
 138   1        EA=0;   
 139   1        timer0_tick=0;
 140   1        TR0=0;
 141   1        TMOD &= 0XF0;
 142   1        TMOD |=0x01;
 143   1        TL0=(TIMER0_COUNT & 0x00FF);
 144   1        TH0=(TIMER0_COUNT >> 8);
 145   1        PT0=0;
 146   1        ET0=1;
 147   1        TR0=1;
 148   1        EA=1;
 149   1      }
 150          void main (void)  {
 151   1        set_LCD();
 152   1        clear_LCD();
 153   1        display_LCD_string("welcome to use");
 154   1        timer0_initialize();
 155   1        IT0=1;
 156   1        EX0=1;
 157   1        while(1);                        /* 无穷循环 */
 158   1      }
 159          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    418    ----
   CONSTANT SIZE    =     22    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     13       2
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

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