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

📄 hjmcu.lst

📁 很实用的单片机例程
💻 LST
字号:
C51 COMPILER V7.00  HJMCU                                                                  11/03/2011 23:05:12 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 DEBUG OBJECTEXTEND

stmt level    source

   1          /**************************************************************************************************
   2          *** 慧净电子1天入门、10天学会、1年精通单片机与C语言视频教程配套程序源码                         ***
   3          *** 实验板:HJ-1G HJ-3G 开发板                                                                      ***
   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          
  14          //开机次数记忆
  15          #include<reg52.h>
  16          #define uchar unsigned char
  17          #define uint unsigned int
  18          bit  write=0;           //写24C02的标志;
  19          sbit sda=P2^0;                         
  20          sbit scl=P2^1;
  21          sbit dula=P2^6;
  22          sbit wela=P2^7;
  23          sbit RST=P2^5;   //时钟 
  24          sbit CS_DA =P2^4 ;  //HJ-1G DAC
  25          sbit JD=P0^6;
  26          sbit FM=P2^3;
  27          
  28          
  29          uchar sec,tcnt; 
  30          uchar code table[]={
  31          0x3f,0x06,0x5b,0x4f,
  32          0x66,0x6d,0x7d,0x07,
  33          0x7f,0x6f,0x77,0x7c,
  34          0x39,0x5e,0x79,0x71};
  35          void ioin()  //IO口继电器、数码管锁存函数
  36             {      
  37   1                wela=1;
  38   1           P0 = 1;  
  39   1                JD = 0;    
  40   1           wela=0;
  41   1                dula=1;
  42   1                P0=0;
  43   1                dula=0;
  44   1          }
  45          void delay()
  46          { ;; }
  47          void delay1ms(uint z)
  48          {
  49   1              uint x,y;
  50   1              for(x=z;x>0;x--)
  51   1                      for(y=110;y>0;y--);
  52   1      }
  53          void start()  //开始信号
  54          {       
C51 COMPILER V7.00  HJMCU                                                                  11/03/2011 23:05:12 PAGE 2   

  55   1              sda=1;
  56   1              delay();
  57   1              scl=1;
  58   1              delay();
  59   1              sda=0;
  60   1              delay();
  61   1      }
  62          void stop()   //停止
  63          {
  64   1              sda=0;
  65   1              delay();
  66   1              scl=1;
  67   1              delay();
  68   1              sda=1;
  69   1              delay();
  70   1      }
  71          void respons()  //应答
  72          {
  73   1              uchar i;
  74   1              scl=1;
  75   1              delay();
  76   1              while((sda==1)&&(i<250))i++;
  77   1              scl=0;
  78   1              delay();
  79   1      }
  80          void init()
  81          {
  82   1         RST=0; //总线时钟低电评
  83   1         CS_DA =0 ;
  84   1              sda=1;
  85   1              delay();
  86   1              scl=1;
  87   1              delay();
  88   1      }
  89          void write_byte(uchar date)
  90          {
  91   1              uchar i,temp;
  92   1              temp=date;
  93   1              for(i=0;i<8;i++)
  94   1              {
  95   2                      temp=temp<<1;
  96   2                      scl=0;
  97   2                  delay();
  98   2                      sda=CY;
  99   2                      delay();
 100   2                      scl=1;
 101   2                      delay();
 102   2              }
 103   1              scl=0;
 104   1              delay();
 105   1              sda=1;
 106   1              delay();
 107   1      }
 108          uchar read_byte()
 109          {
 110   1              uchar i,k;
 111   1              scl=0;
 112   1              delay();
 113   1              sda=1;
 114   1              delay();
 115   1              for(i=0;i<8;i++)
 116   1              {
C51 COMPILER V7.00  HJMCU                                                                  11/03/2011 23:05:12 PAGE 3   

 117   2                      scl=1;
 118   2                      delay();        
 119   2                      k=(k<<1)|sda;
 120   2                      scl=0;
 121   2                      delay();        
 122   2              }
 123   1              return k;
 124   1      }
 125          void write_add(uchar address,uchar date)
 126          {
 127   1              start();
 128   1              write_byte(0xa0);
 129   1              respons();
 130   1              write_byte(address);
 131   1              respons();
 132   1              write_byte(date);
 133   1              respons();
 134   1              stop();
 135   1      }
 136          uchar read_add(uchar address)
 137          {
 138   1              uchar date;
 139   1              start();
 140   1              write_byte(0xa0);
 141   1              respons();
 142   1              write_byte(address);
 143   1              respons();
 144   1              start();
 145   1              write_byte(0xa1);
 146   1              respons();
 147   1              date=read_byte();
 148   1              stop();
 149   1              return date;
 150   1      }
 151          void display(uchar bai_c,uchar sh_c)    //显示程序
 152          {
 153   1         dula=0;
 154   1         P0=table[bai_c];             //显示第一位
 155   1         dula=1;
 156   1         dula=0;
 157   1         wela=0;
 158   1         P0=0x7e;
 159   1         wela=1;
 160   1         wela=0;
 161   1         delay1ms(5);
 162   1         dula=0;
 163   1         P0=table[sh_c];              //显示第二位
 164   1         dula=1;
 165   1         dula=0;
 166   1         wela=0;
 167   1         P0=0x7d;
 168   1         wela=1;
 169   1         wela=0;
 170   1         delay1ms(5);
 171   1      }
 172          void main()
 173          {
 174   1         ioin();
 175   1              init();
 176   1              sec=read_add(2);    //读出保存的数据赋于sec
 177   1              if(sec>100)        //防止首次读取出错误数据
 178   1                      sec=0;
C51 COMPILER V7.00  HJMCU                                                                  11/03/2011 23:05:12 PAGE 4   

 179   1              TMOD=0x01;                      //定时器工作在方式1
 180   1              ET0=1; 
 181   1              EA=1;
 182   1              TH0=(65536-50000)/256; //对TH0 TL0赋值
 183   1              TL0=(65536-50000)%256; //使定时器0.05秒中断一次
 184   1              TR0=1;                 //开始计时
 185   1              while(1)
 186   1              {
 187   2                      display(sec/10,sec%10);
 188   2                      if(write==1)                  //判断计时器是否计时一秒
 189   2                      {
 190   3                              write=0;              //清零
 191   3                              write_add(2,sec);         //在24c02的地址2中写入数据sec
 192   3                      }
 193   2              } 
 194   1      }
 195          void t0() interrupt 1 //定时中断服务函数
 196          {
 197   1              TH0=(65536-50000)/256; //对TH0 TL0赋值
 198   1              TL0=(65536-50000)%256; //重装计数初值
 199   1              tcnt++;        //每过50ms tcnt加一
 200   1              if(tcnt==20)  //计满20次(1秒)时
 201   1              {
 202   2                  tcnt=0;   //重新再计
 203   2                  sec++;
 204   2                  write=1;  //1秒写一次24C02
 205   2                  if(sec==100) //定时100秒,再从零开始计时
 206   2                      sec=0;
 207   2              }
 208   1      }
 209          
 210          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    405    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2       1
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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