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

📄 hjmcu.lst

📁 很实用的单片机例程
💻 LST
字号:
C51 COMPILER V7.00  HJMCU                                                                  07/29/2009 20:00:07 PAGE 1   


C51 COMPILER V7.00, COMPILATION OF MODULE HJMCU
OBJECT MODULE PLACED IN HJMCU.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE HJMCU.C BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          /**************************************************************************************************
   2          *** 慧净电子1天入门、10天学会、1年精通单片机与C语言视频教程配套程序源码                         ***
   3          *** 实验目的:HJ-1G 开发板                                                                      ***
   4          *** MCU: STC89C52/AT89C52  部分C源码可以直接用于项目开发、欢迎复制共享、功德无量、没有版权      ***
   5          *** 作者:慧净助学会员                                                                          ***
   6          *** 编译器:KEIL                                                                                ***
   7          *** 百度交流空间:http://hi.baidu.com/HJMCU      WWW.HJMCU.COM                                  ***
   8          *** 论坛交流:http://bbs.hjmcu.com   欢迎来论坛一分钱不要下载配套的仿真电路                     ***
   9          *** 配套的硬件学习板网址:http://shop37031453.taobao.com/                                       ***
  10          *** 日期:2008.8.8                                                                              ***
  11          *** 目标:用C语言写程序就这么简单、慧争祝你1天入门、10天学会、1年精通单片机与C语言、找个好工作  ***
  12          ***************************************************************************************************/
  13          //第一排第一个按键按下后,数码管数字加1  
  14          #include <reg52.h>              //52系列单片机头文件
  15          #define uchar unsigned char
  16          #define uint unsigned int 
  17          sbit key1=P3^4;
  18          sbit key2=P3^5;
  19          sbit key3=P3^6;
  20          sbit key4=P3^7;
  21          sbit dula=P2^6;         //申明U1锁存器的锁存端
  22          sbit wela=P2^7;         //申明U2锁存器的锁存端
  23          sbit RST=P2^5;       //   时钟电路
  24          sbit dlnz=P3^0;     //  用来做独立按健实验 
  25          uchar code table[]={
  26          0x3f,0x06,0x5b,0x4f,
  27          0x66,0x6d,0x7d,0x07,
  28          0x7f,0x6f,0x77,0x7c,
  29          0x39,0x5e,0x79,0x71};
  30          void delayms(uint);
  31          uchar numt0,num;
  32          void display(uchar numdis)  //显示子函数
  33          {
  34   1              uchar shi,ge;         //分离两个分别要显示的数
  35   1              shi=numdis/10;
  36   1              ge=numdis%10;
  37   1      
  38   1          dula=1;
  39   1              P0=table[shi];    //送十位段选数据
  40   1              dula=0;
  41   1              P0=0xff;                //送位选数据前关闭所有显示,防止打开位选锁存时
  42   1              wela=1;                 //原来段选数据通过位选锁存器造成混乱
  43   1              P0=0xfe;                //送位选数据
  44   1              wela=0;
  45   1              delayms(5);     //延时
  46   1      
  47   1              dula=1;
  48   1              P0=table[ge];  //送个位段选数据
  49   1              dula=0;
  50   1              P0=0xff;
  51   1              wela=1;
  52   1              P0=0xfd;
  53   1              wela=0;
  54   1              delayms(5);
  55   1      }
C51 COMPILER V7.00  HJMCU                                                                  07/29/2009 20:00:07 PAGE 2   

  56          void delayms(uint xms)                          
  57          {
  58   1              uint i,j;
  59   1              for(i=xms;i>0;i--)                    //i=xms即延时约xms毫秒
  60   1                      for(j=110;j>0;j--);
  61   1      }
  62          void init()    //初始化函数
  63          {RST=0;     //关掉时钟电路
  64   1       
  65   1              TMOD=0x01;//设置定时器0为工作方式1(0000 0001)
  66   1              TH0=(65536-45872)/256;//装初值50ms一次中断
  67   1              TL0=(65536-45872)%256;
  68   1              EA=1;  //开总中断
  69   1              ET0=1; //开定时器0中断  
  70   1      }
  71          void keyscan()
  72          {
  73   1      
  74   1      
  75   1              if(key1==0)
  76   1              {
  77   2                      delayms(10);
  78   2                      if(key1==0)
  79   2                      {
  80   3                              num++;
  81   3                              if(num==60)//当到60时重新归0
  82   3                                      num=0;
  83   3                              while(!key1);//等待按键释放     
  84   3                      }
  85   2              }
  86   1              if(key2==0)
  87   1              {
  88   2                      delayms(10);
  89   2                      if(key2==0)
  90   2                      {
  91   3                              if(num==0)//当到0时重新归60
  92   3                                      num=60;
  93   3                              num--;  
  94   3                              while(!key2);
  95   3                      }
  96   2              }
  97   1              if(key3==0)
  98   1              {
  99   2                      delayms(10);
 100   2                      if(key3==0)
 101   2                      {
 102   3                              num=0;  //清0
 103   3                              while(!key3);   
 104   3                      }
 105   2              }
 106   1              if(key4==0)
 107   1              {
 108   2                      delayms(10);
 109   2                      if(key4==0)
 110   2                      {
 111   3                              while(!key4);
 112   3                              TR0=~TR0;//启动或停止定时器0    
 113   3                      }
 114   2              }
 115   1      }
 116          void main()
 117          {dlnz=0; 
C51 COMPILER V7.00  HJMCU                                                                  07/29/2009 20:00:07 PAGE 3   

 118   1              init();//初始化函数
 119   1              while(1) 
 120   1              {
 121   2                      keyscan();
 122   2                      display(num);
 123   2              }
 124   1      }
 125          void T0_time() interrupt 1
 126          {
 127   1              TH0=(65536-45872)/256;//重装初值
 128   1              TL0=(65536-45872)%256;  
 129   1              numt0++;        
 130   1              if(numt0==20)           //如果到了20次,说明1秒时间到
 131   1              {
 132   2                      numt0=0;                //然后把num清0重新再计20次
 133   2                      num++;
 134   2                      if(num==60)
 135   2                              num=0;
 136   2              }               
 137   1      }
 138          
 139          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    246    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2       1
   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 + -