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

📄 lesson.lst

📁 此文档是网上一款开发板的完整系统,内附有电路图纸!系统有完整的接口程式,包含了字符型LCD驱动,pc串口通讯程式,flash读写驱动程式,中文字库,ad芯片驱动程式,keyscan4*4扫描程式
💻 LST
字号:
C51 COMPILER V7.10   LESSON                                                                07/01/2005 09:27:01 PAGE 1   


C51 COMPILER V7.10, COMPILATION OF MODULE LESSON
OBJECT MODULE PLACED IN lesson.OBJ
COMPILER INVOKED BY: D:\PROGRAM FILES\KEIL\C51\BIN\C51.EXE lesson.c OPTIMIZE(6,SPEED) BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //**********************************************************************************
   2          //本函数模块来自"51单片机世界",作者版主丁丁(聂小猛)。
   3          //主页地址http://www.mcu51.com
   4          //本程序为本站推出的"MCU51-63K仿真器"及"DX-51多功能试验板"而设计的,详情请到本站查看.
   5          //"51单片机世界"版权所有,未经允许,不得抄袭作为商业用途
   6          //**********************************************************************************
   7          //DX-51多功能试验板的试验课程函数模块
   8          #define uchar unsigned char
   9          #define uint  unsigned int
  10          #define ulong unsigned long
  11          #include <reg52.h>
  12          #include "study.h"
  13          
  14          //*****************************
  15          //设置液晶的灰度
  16          void setlcdlight(void)
  17          {
  18   1              uchar ch;
  19   1              cls(8); setcursor(0,0);  //显示提示
  20   1              lcdstring("按UP变黑\r\n按DOWN变淡\r\n按ENTER退出\r\n当前灰度:");
  21   1              while(1)
  22   1              {
  23   2                      setcursor(9,6);
  24   2                      lcddigit(lcdlight); //打印当前灰度
  25   2                      ch=getkey(1000);        //取键值
  26   2                      switch(ch) 
  27   2                      {
  28   3                              case 'U':  //按up的处理
  29   3                                      light(lcdlight++);  //灰度加1,送入液晶
  30   3                                      if(lcdlight>63)lcdlight=63; //设置上限
  31   3                              break; 
  32   3                              case 'D': //按down键的处理
  33   3                                      light(lcdlight--);  //灰度减1
  34   3                                      if(lcdlight<1)lcdlight=1; //设置下限
  35   3                              break;
  36   3                              case 'C': //按cacel或者enter退出
  37   3                              case 'Y':
  38   3                              return;
  39   3                      }
  40   2              }
  41   1      }
  42          //*******************************************
  43          //走马灯试验
  44          sbit LED1=P1^0; //定义发光管的对应管脚位置
  45          sbit LED2=P1^1;
  46          sbit LED3=P1^2;
  47          sbit LED4=P1^3;
  48          void led4(void)
  49          {
  50   1              uint n;
  51   1              cls(8);
  52   1              setcursor(0,0); 
  53   1              lcdstring("4个LED正在做跑马灯运动,任意键退出。");
  54   1              do
  55   1              {
C51 COMPILER V7.10   LESSON                                                                07/01/2005 09:27:01 PAGE 2   

  56   2                      LED4=1;  //点亮一个灯,灭掉一个灯
  57   2                      LED1=0;
  58   2                      for(n=0;n<30000;n++); //延时
  59   2                      LED1=1;
  60   2                      LED2=0;
  61   2                      for(n=0;n<30000;n++);
  62   2                      LED2=1;
  63   2                      LED3=0;
  64   2                      for(n=0;n<30000;n++);
  65   2                      LED3=1;
  66   2                      LED4=0;
  67   2                      for(n=0;n<30000;n++);
  68   2              }while(getkey(1)==0); //有键按下结束
  69   1      }
  70          //**************************
  71          //通讯试验
  72          void common(void)
  73          {
  74   1              uchar c;
  75   1              
  76   1              cls(8);setcursor(0,0);  
  77   1              lcdstring("通讯波特率38400bps.按任意键开始。");
  78   1              while(getkey(1000)==0);  //等待按键
  79   1              cls(8);setcursor(0,0);  
  80   1              lcdstring("所按键值都会送到串口,在计算机显示。按CANCEL退出。");
  81   1              putstring("所有在此窗口按键都会送往单片机并在液晶显示出来。按ESC退出。\r\n");   
  82   1              while(1) 
  83   1              {
  84   2                      while(inbufsign) //如果有串口数据到来则处理数据
  85   2                      {       
  86   3                              c=getbyte(); //取出一个串口缓冲区的数据
  87   3                              if(c==0x11)break;//过滤掉全速运行时KEIL发出的联机字符"0x11"
  88   3                              beep(1);    //发一声提示音
  89   3                              putbyte(c);  //反显到计算机
  90   3                              lcdchar(c); //打印到屏幕
  91   3                              if(c==0x1b)    //如果收到ESC则退出
  92   3                                      return;//收到计算机发出的ESC退出接收测试继续运行
  93   3                      }
  94   2      
  95   2                      if((c=getkey(1000))=='C') //如果按键cacel则退出
  96   2                              return;//
  97   2                      else if(c!=0)   //如果其他按键,将该键值送到串口
  98   2                              putbyte(c);
  99   2                      
 100   2              }
 101   1      }
 102          
 103          
 104          //**************************************************
 105          //试验课程
 106          void lesson(void)
 107          {
 108   1              uchar ch;
 109   1              uchar xdata *x;
 110   1      
 111   1              while(1)
 112   1              {
 113   2      UPM:    cls(8); //显示提示信息
 114   2                      setcursor(0,0);
 115   2                      lcdstring("1灰度2跑马灯\r\n3串口4读闪存\r\n5唱歌6游戏↓");
 116   2      MEMU:   while((ch=getkey(1000))==0); //等待按键
 117   2                      switch(ch) 
C51 COMPILER V7.10   LESSON                                                                07/01/2005 09:27:01 PAGE 3   

 118   2                      {
 119   3                              case '1': //设置灰度
 120   3                                      setlcdlight();
 121   3                              break;
 122   3              
 123   3                              case '2': //跑马灯
 124   3                                      led4();         
 125   3                              break;
 126   3              
 127   3                              case '3':       //通讯试验
 128   3                                      common();       
 129   3                              break;
 130   3              
 131   3                              case '4':   //读flash内容
 132   3                                      readflash();            
 133   3                              break;
 134   3               
 135   3                              case '5':    //唱歌
 136   3                                      playmusic();    
 137   3                              break;
 138   3              
 139   3                              case '6':
 140   3              
 141   3                              break;
 142   3      
 143   3                              case '7':       
 144   3                                      //测试外部内存,运行完这个循环,x=0x8000则正常
 145   3                                      cls(8);setcursor(0,0);
 146   3                                      for(x=0;x<0x8000;x++)
 147   3                                      {
 148   4                                              ch=*x;  //保存该地址的值 
 149   4                                              *x=0xaa; //写入0xaa,读出检测
 150   4                                              if(*x!=0xaa)
 151   4                                                 break;
 152   4                                              *x=0x55; //写入0x55,读出检测
 153   4                                              if(*x!=0x55)
 154   4                                                 break;
 155   4                                              *x=ch;   //恢复该地址的值
 156   4                                      }
 157   3                                      if(x==0x8000)
 158   3                                      {
 159   4                                              lcdstring("32K外部内存全部正常!");
 160   4                                              beep(10);// 哔一声内存检测正常  
 161   4                                      }
 162   3                                      else
 163   3                                      {
 164   4                                              lcdstring("外部内存不正常!请检查。");
 165   4                                              beep(100);
 166   4                                      }
 167   3                                      lcdstring("任意键退出。");
 168   3                                      while(getkey(1)==0);
 169   3                              break;
 170   3      
 171   3                              case '8':         //写文件
 172   3                                      write_file();           
 173   3                              break;
 174   3      
 175   3                              case '9':               
 176   3                              break;
 177   3      
 178   3                              case '0':               
 179   3                              break;
C51 COMPILER V7.10   LESSON                                                                07/01/2005 09:27:01 PAGE 4   

 180   3      
 181   3                              case 'D':   //下一页菜单
 182   3                                      cls(8);
 183   3                                      setcursor(0,0);
 184   3                                      lcdstring("7内存检测 ↑\r\n8写文件9.USB\r\n0网卡通讯");
 185   3                                      goto MEMU;
 186   3                              case 'U':    //回到上一页菜单
 187   3                                      goto UPM;
 188   3      
 189   3                              case 'C':   //按cancel退出到首页面,其实是程序软复位
 190   3                                      ((void(code *)(void))0x0000)();
 191   3                              break;
 192   3                              
 193   3                      }
 194   2              }
 195   1      }


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