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

📄 hclcd.lst

📁 at89s51实验例程代码
💻 LST
📖 第 1 页 / 共 4 页
字号:
C51 COMPILER V7.07   HCLCD                                                                 06/16/2005 23:43:25 PAGE 1   


C51 COMPILER V7.07, COMPILATION OF MODULE HCLCD
OBJECT MODULE PLACED IN HCLCD.OBJ
COMPILER INVOKED BY: C:\TOOLS\Keil\C51\BIN\C51.EXE HCLCD.c OPTIMIZE(7,SPEED) BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          //aa 00 47 13 25 63 00 04 04
   2          //       秒 分 时  日 星期和月(最高3位0-6,代表1-7) 
   3          #include <intrins.h>
   4          #include<AT89x52.h>
   5          #include "hclcddot.h"                   //点阵库
   6          #define Uchar unsigned char
   7          #define Uint  unsigned int
   8          #define SomeNOP(); _nop_();_nop_();_nop_(); 
   9          /*LCD驱动要用到的一些口线定意*/
  10          #define LCDPORT P0
  11          sbit D_I = P3^7;
  12          sbit R_W = P3^6;
  13          sbit E = P3^5;
  14          sbit CS1 = P3^4;
  15          sbit CS2 = P3^2;
  16          sbit RST = P3^3;
  17          /*I2C要用到的口线定意*/
  18          sbit SDA = P2^7;
  19          sbit SCL = P2^6;
  20          
  21          ////////////以下为函数声明///////////////////////////////
  22          //LCD驱动要用到的一些函数
  23          void lcdwrite_cmd(Uchar cmd_dat);
  24          void lcdwrite_dat(Uchar dot_dat);
  25          void lcd_busy();
  26          Uchar  lcdread_dat(void);
  27          void lcddispon(void);
  28          void lcddispoff(void);
  29          void lcdclrall(void);
  30          void lcdini(void);
  31          void HZ12disp(Uchar Nowrow,Uchar Nowcol,Uchar CHplace);
  32          void ASC12disp(Uchar Nowrow,Uchar Nowcol,Uchar ASCplace);
  33          void flashlogo(Uchar Bmpcol);
  34          void Disp128_64(Uchar BMPplace);
  35          void delay(void);
  36          //I2C驱动要用到的一些函数
  37          void Delay_1ms(Uchar time);
  38          void I2CStart(void);    
  39          void I2CStop(void);
  40          void ACK(void);                 //Acknowledge信号
  41          void NACK(void);                        //没有Acknowledge信号
  42          void AutoACK(void);             //在一定的时间内自动确定ACK的信号//
  43          void Writex(Uchar j);
  44          Uchar Readx(void);
  45          void X24_Write(Uchar Addresshigh,Uchar Addresslow,Uchar Write_date);
  46          Uchar X24_Read(Uchar Addresshigh,Uchar Addresslow);
  47          void X24_WritePage(Uchar Addresshigh,Uchar Addresslow,Uchar idata *Writeip);
  48          void X24_ReadPage(Uchar Addresshigh,Uchar Addresslow,Uchar idata *Readip);
  49          void GetPCF8563(Uchar idata *Getip);
  50          void SetPCF8563(Uchar idata *Setip);
  51          Uchar ReadPCF8563(Uchar AddrePCF);
  52          void WritePCF8563(Uchar AddrePCF,Uchar PCFdata);
  53          void SetWaring (Uchar Wyear,Uchar Wmonth,Uchar Wday);
  54          bit CheckTime(void);
  55          void rs232(void);
C51 COMPILER V7.07   HCLCD                                                                 06/16/2005 23:43:25 PAGE 2   

  56          void time0(void);
  57          /*定义一个接收的数组*/
  58          Uchar data recdata[8];                  //
  59          Uchar idata L24cxxdata[64];             //用于读出或写入24C16的数据
  60          Uchar idata clockdata[7];               //系统时钟
  61          Uchar pcpointer,timecount,timecount2,*gettimeip;                                //用于设定从PC接收和发的指针
  62          /*定义二个地址编码寄存器,设定地址线稳定时间,定时器2的延时时间参数,动画的时位置参数,发码结束后取消静音的时
             -间*/
  63          Uchar data MCaddreh,MCaddrel,MCaddtime,time0_1s,led1_8;led18count,logocol;
  64          Uint data nomutetime;   
  65          Uchar newbmpcount;
  66          /*定义标志位存放的寄存器*/
  67          Uchar bdata myflag,myflag2,bmpflag;                             //定义一个用于标志寄存器存放的
  68          sbit nomutebit = myflag^0;              //用于开始取消静音标志
  69          sbit recpcokbit = myflag^1;             //用于设定接收到一个完整的控制指令码
  70          sbit returnbit = myflag^2;              //用于向PC回传数据标志
  71          sbit findokbit = myflag^3;              //寻找到明码地址
  72          sbit sendbit = myflag^4;                //开始发码
  73          sbit timenewbit = myflag^5;             //时钟更新标志
  74          sbit callnewbit = myflag^6;             //有新的呼叫
  75          sbit endnewbit=myflag^7;                //呼叫结束
  76          
  77          sbit w24cxxbit = myflag2^0;             //设定明码表
  78          sbit timeoutbit =myflag2^1;
  79          sbit newtimebit = myflag2^2;    //设定新的系统时间
  80          sbit r_lbit     = bmpflag^0;
  81          sbit b_wbit = bmpflag^1;                //图和文字标志
  82          sbit newbmpbit = bmpflag^2;             //更新图片
  83          void main(void)
  84          {       
  85   1              TH0 = 0xf8;                                     //2ms
  86   1              TL0 = 0xce;
  87   1              TH1 = 0xfd;                                     //以9600Baud的速率和PC机通信
  88   1              TL1 = 0xfd;     
  89   1              TH2 = 0x4c;                                     //50ms
  90   1              TL2 = 0x00;
  91   1              T2CON = 0x00;
  92   1              TMOD = 0x21;                            //Time0为16位,Time1为8位常数自装
  93   1              SCON = 0x50;
  94   1              IP = 0x10;
  95   1              TR0 = 1;
  96   1              TR1 = 1;
  97   1              TR2 = 1;
  98   1              IE = 0x92;                                      //Time0,Time2,RS232中断
  99   1              led1_8=0xfe;
 100   1              led18count=0x01;
 101   1              timecount = 0x64;
 102   1              time0_1s=0x05;
 103   1              timecount2 = 0x32;
 104   1              newbmpcount = 0x01;
 105   1              logocol =0;
 106   1              r_lbit =0;
 107   1              timeoutbit =0;
 108   1              b_wbit=1;
 109   1      //      setadd(80);
 110   1      
 111   1              lcdini();
 112   1              lcdclrall();
 113   1              while(1)
 114   1              {
 115   2      
 116   2                      HZ12disp(0x00,0x04,0x01);                       //承
C51 COMPILER V7.07   HCLCD                                                                 06/16/2005 23:43:25 PAGE 3   

 117   2                      HZ12disp(0x00,0x10,0x02);                       //接
 118   2                      HZ12disp(0x00,0x1C,0x03);                       //单
 119   2                      HZ12disp(0x00,0x28,0x04);                       //片
 120   2                      HZ12disp(0x00,0x34,0x05);                       //机
 121   2                      HZ12disp(0x00,0x40,0x06);                       //开
 122   2                      HZ12disp(0x00,0x4C,0x07);                       //发
 123   2                      HZ12disp(0x00,0x58,0x08);                       //及    
 124   2                      HZ12disp(0x00,0x64,0x09);                       //解
 125   2                      HZ12disp(0x00,0x70,0x0A);                       //密
 126   2      
 127   2                      HZ12disp(0x01,0x0A,0x0B);                       //各
 128   2                      HZ12disp(0x01,0x16,0x0C);                       //类
 129   2                      ASC12disp(0x01,0x22,0x0B);                      //I
 130   2                      ASC12disp(0x01,0x28,0x0C);                      //C
 131   2                      HZ12disp(0x01,0x2E,0x0D);                       //卡
 132   2                      ASC12disp(0x01,0x3A,0x0D);                      //;
 133   2                      ASC12disp(0x01,0x40,0x0A);                      //P
 134   2                      ASC12disp(0x01,0x46,0x0B);                      //I
 135   2                      ASC12disp(0x01,0x4C,0x0C);                      //C
 136   2                      HZ12disp(0x01,0x52,0x03);                       //单
 137   2                      HZ12disp(0x01,0x5E,0x04);                       //片
 138   2                      HZ12disp(0x01,0x6A,0x05);                       //机
 139   2              
 140   2                      ASC12disp(0x02,0x0A,0x05);                      //5
 141   2                      ASC12disp(0x02,0x10,0x01);                      //1
 142   2                      HZ12disp(0x02,0x16,0x0E);                       //编
 143   2                      HZ12disp(0x02,0x22,0x0F);                       //程
 144   2                      HZ12disp(0x02,0x2E,0x10);                       //器
 145   2                      ASC12disp(0x02,0x3A,0x0D);                      //;
 146   2                      ASC12disp(0x02,0x40,0x0A);                      //P
 147   2                      ASC12disp(0x02,0x46,0x0B);                      //I
 148   2                      ASC12disp(0x02,0x4C,0x0C);                      //C
 149   2                      HZ12disp(0x02,0x52,0x0E);                       //编
 150   2                      HZ12disp(0x02,0x5E,0x0F);                       //程
 151   2                      HZ12disp(0x02,0x6A,0x10);                       //器
 152   2              
 153   2                      HZ12disp(0x03,0x00,0x14);                       //亮
 154   2                      HZ12disp(0x03,0x0c,0x15);                       //灯
 155   2              
 156   2                      ASC12disp(0x03,0x2c,0x02);                      //2
 157   2                      ASC12disp(0x03,0x32,0x00);                      //0
 158   2              
 159   2                      HZ12disp(0x03,0x44,0x11);                       //年
 160   2      
 161   2                      HZ12disp(0x03,0x5c,0x12);                       //月
 162   2      
 163   2                      HZ12disp(0x03,0x74,0x13);                       //日
 164   2      
 165   2      
 166   2                      ASC12disp(0x04,0x5c,0x0e);                      //:             
 167   2      
 168   2                      ASC12disp(0x04,0x6e,0x0e);      
 169   2      
 170   2                      while(1)                                                        //b_wbit==1)
 171   2                      {
 172   3                              if(timenewbit==1)
 173   3                              {
 174   4                                      Uchar newtime0;
 175   4                                      timenewbit=0;
 176   4      
 177   4                                      newtime0=(clockdata[6]>>4)&0x0f;
 178   4                                      ASC12disp(0x03,0x38,newtime0);
C51 COMPILER V7.07   HCLCD                                                                 06/16/2005 23:43:25 PAGE 4   

 179   4                                      newtime0=clockdata[6]&0x0f;
 180   4                                      ASC12disp(0x03,0x3e,newtime0);
 181   4                              
 182   4                                      newtime0=(clockdata[4]>>4)&0x01;
 183   4                                      ASC12disp(0x03,0x50,newtime0);
 184   4                                      newtime0=clockdata[4]&0x0f;
 185   4                                      ASC12disp(0x03,0x56,newtime0);
 186   4                              
 187   4                                      HZ12disp(0x03,0x1B,(led18count+0x15));                  //几号
 188   4                              
 189   4                                      newtime0=(clockdata[3]>>4)&0x03;
 190   4                                      ASC12disp(0x03,0x68,newtime0);
 191   4                                      newtime0=clockdata[3]&0x0f;
 192   4                                      ASC12disp(0x03,0x6e,newtime0);
 193   4                              
 194   4                                      newtime0=(clockdata[2]>>4)&0x03;
 195   4                                      ASC12disp(0x04,0x50,newtime0);
 196   4                                      newtime0=clockdata[2]&0x0f;
 197   4                                      ASC12disp(0x04,0x56,newtime0);
 198   4                                      
 199   4                                      newtime0=(clockdata[1]>>4)&0x07;
 200   4                                      ASC12disp(0x04,0x62,newtime0);
 201   4                                      newtime0=clockdata[1]&0x0f;
 202   4                                      ASC12disp(0x04,0x68,newtime0);
 203   4                              
 204   4                                      newtime0=(clockdata[0]>>4)&0x07;
 205   4                                      ASC12disp(0x04,0x74,newtime0);
 206   4                                      newtime0=clockdata[0]&0x0f;
 207   4                                      ASC12disp(0x04,0x7a,newtime0);
 208   4                              }
 209   3      
 210   3                              if(r_lbit==0)
 211   3                              {
 212   4                                      flashlogo(logocol++);
 213   4                                      if (logocol==32)
 214   4                                      {r_lbit=1;}
 215   4                                      lcddispon();
 216   4                                      delay();
 217   4                              }
 218   3                              else
 219   3                              {
 220   4                                      flashlogo(logocol--);
 221   4                                      if(logocol==0)
 222   4                                      {r_lbit =0;}
 223   4                                      lcddispon();
 224   4                                      delay();
 225   4                              }       
 226   3                      }
 227   2      /*
 228   2                      while(b_wbit==0)
 229   2                      {
 230   2                              if(newbmpbit==1)
 231   2                              {
 232   2                                      newbmpbit=0;
 233   2                                      Disp128_64(newbmpcount);
 234   2                              
 235   2                              }
 236   2                      }
 237   2      */              
 238   2              }
 239   1      }
 240          
C51 COMPILER V7.07   HCLCD                                                                 06/16/2005 23:43:25 PAGE 5   

 241                  
 242          //以下为定时器TIME0中断程序
 243          void time0(void) interrupt 1
 244          {
 245   1              TH0 = 0xf8;
 246   1              TL0 = 0xce;
 247   1              timecount--;
 248   1              if(timecount==0)
 249   1              {       
 250   2                      timecount = 0x64;
 251   2                      gettimeip=&clockdata[0];
 252   2                      GetPCF8563(gettimeip);
 253   2                      time0_1s--;

⌨️ 快捷键说明

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