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

📄 uart.lst

📁 ADUC834串口通讯C代码
💻 LST
字号:
C51 COMPILER V8.08   UART                                                                  04/02/2009 17:28:56 PAGE 1   


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

line level    source

   1          #include<ADI/ADuC834.h>    //sfr定义用头文件
   2          
   3           // Delay routine           //延时用子程序
   4          //unsigned char data[]={08FE,10F9,0795,09CA};
   5          
   6          #define uchar unsigned char
   7          #define uint unsigned int
   8          
   9          sbit rs=P2^3;    //1602的数据/指令选择控制线 
  10          sbit rw=P2^4;        //1602的读写控制线 
  11          sbit en=P2^5;        //1602的使能控制线 
  12          
  13          unsigned char DIAC[]="0xAC";
  14          unsigned char DIBC[]="0xBC";
  15          unsigned char DICC[]="0xCC";
  16          unsigned char EICC[]="sbuf=0x02";
  17          unsigned char g_data=0;
  18          unsigned char tcount;
  19          void delay(int a)
  20           {
  21   1       int length;
  22   1       for(;a>0;a--)
  23   1        {
  24   2        length=10000;
  25   2        while (length >=0)
  26   2            length--;
  27   2        }
  28   1       }
  29          void lcd_wcom(uchar com)  //1602写命令函数                 
  30          { 
  31   1          rs=0;            //选择指令寄存器 
  32   1          rw=0;            //选择写 
  33   1          P0=com;            //把命令字送入P2 
  34   1          delay(5);            //延时一小会儿,让1602准备接收数据 
  35   1          en=1;           //使能线电平变化,命令送入1602的8位数据口 
  36   1          en=0; 
  37   1      } 
  38          void lcd_wdat(uchar dat)        //1602写数据函数       
  39          { 
  40   1          rs=1;        //选择数据寄存器 
  41   1          rw=0;        //选择写 
  42   1          P0=dat;        //把要显示的数据送入P2 
  43   1          delay(5);        //延时一小会儿,让1602准备接收数据 
  44   1          en=1;        //使能线电平变化,数据送入1602的8位数据口 
  45   1          en=0; 
  46   1      } 
  47          void lcd_init()              //1602初始化函数       
  48          { 
  49   1          lcd_wcom(0x38);       //8位数据,双列,5*7字形       
  50   1          lcd_wcom(0x0F);      //开启显示屏,关光标,光标不闪烁 
  51   1          lcd_wcom(0x06);    //显示地址递增,即写一个数据后,显示位置右移一位 
  52   1          lcd_wcom(0x01);    //清屏 
  53   1      } 
  54          void uart_int() interrupt 4 
  55          {
C51 COMPILER V8.08   UART                                                                  04/02/2009 17:28:56 PAGE 2   

  56   1              unsigned char i;
  57   1              if(SBUF&0x32==0x32)
  58   1              {
  59   2                      lcd_wcom(0x80);
  60   2              //lcd_wdat('L');
  61   2              for(i=0;i<10;i++)
  62   2              {
  63   3               lcd_wdat(EICC[i]);
  64   3              }
  65   2              g_data|=SBUF;
  66   2              }
  67   1              switch(SBUF)
  68   1              {
  69   2                      case 0x32:
  70   2                              lcd_wcom(0x80+0x40);
  71   2                      //lcd_wdat('L');
  72   2                      for(i=0;i<5;i++)
  73   2                      {
  74   3                       lcd_wdat(DIAC[i]);
  75   3                      }  
  76   2                      //curkey=0;
  77   2                      break;
  78   2              case 0x33:
  79   2                              lcd_wcom(0x80+0x40);
  80   2                      //lcd_wdat('L');
  81   2                      for(i=0;i<5;i++)
  82   2                      {
  83   3                       lcd_wdat(DIBC[i]);
  84   3                      }  
  85   2                      //curkey=0;
  86   2                      break;
  87   2              default : 
  88   2                      lcd_wcom(0x80);
  89   2                      //lcd_wdat('L');
  90   2                      for(i=0;i<5;i++)
  91   2                      {
  92   3                       lcd_wdat(DICC[i]);
  93   3                      }  
  94   2                      break;
  95   2              }
  96   1              RI=0;
  97   1      }
  98          void main(void)
  99          {  
 100   1              uchar i; 
 101   1      //      ES=1;
 102   1      //      EA=1;
 103   1              lcd_init();
 104   1        PLLCON=PLLCON&0xF8;    //CPU主频为12.58MHZ
 105   1        SCON=SCON|0x50;    //UART WORK IN MODE 1
 106   1      
 107   1        RCAP2H=-1;
 108   1        RCAP2L=-41;     //使用定时器T2,产生9600的波特率,数据手册上有 
 109   1        
 110   1        T2CON=T2CON|0x30;    //设定定    时器T2的工作方式
 111   1        TR2=1;      //开启定时器T2
 112   1        for(;;)
 113   1        {
 114   2          //g_data=SBUF;    //将要发送到串口的数据送入缓冲 
 115   2          for(;;)
 116   2          {
 117   3            if(SCON&0x01==0x01) //是否发送完毕
C51 COMPILER V8.08   UART                                                                  04/02/2009 17:28:56 PAGE 3   

 118   3            {
 119   4              RI=0;   //关串口接收中断
 120   4              lcd_wcom(0x80+0x40);
 121   4                        //lcd_wdat('L');
 122   4                        for(i=0;i<5;i++)
 123   4                        {
 124   5                         lcd_wdat(DIBC[i]);
 125   5                        } 
 126   4                        if(SBUF)//==0x32)
 127   4                        {
 128   5                              lcd_wcom(0x80);
 129   5                          //lcd_wdat('L');
 130   5                          for(i=0;i<5;i++)
 131   5                          {
 132   6                            lcd_wdat(DIBC[i]);
 133   6                          }
 134   5                        }
 135   4              }
 136   3            break;   //退出查寻
 137   3          }
 138   2          delay(2);   //延时
 139   2        }
 140   1      //  for(;;)
 141   1      //  {
 142   1      //    SBUF=0x32;    //将要发送到串口的数据送入缓冲 
 143   1      //    for(;;)
 144   1      //    {
 145   1      //      if(SCON&0x02==0x02) //是否发送完毕
 146   1      //      TI=0;   //关串口接收中断
 147   1      //      break;   //退出查寻
 148   1      //    }
 149   1      //    delay(2);   //延时
 150   1      //  }
 151   1      }
 152          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    291    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     27    ----
   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 + -