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

📄 mail.lst

📁 基于周立功开发系统的I2C总线实验源代码
💻 LST
字号:
C51 COMPILER V7.20   MAIL                                                                  01/01/2002 03:12:21 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE MAIL
OBJECT MODULE PLACED IN mail.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE mail.c DEBUG OBJECTEXTEND

line level    source

   1          /*
   2          ZLG7290 演示程序
   3          */
   4          #include "I2C.h"
   5          #include "ZLG7290.h"
   6          //定义键盘中断标志,FlagINT=1 表示有键按下
   7          volatile bit FlagINT = 0;
   8          code char DispDat[16] =
   9          {0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0xEE,0x3E,0x9C,0x7A,0x9E,0x8E};
  10          //{//字母AbCdEFgHiJkLoPqr 的字形数据
  11          //0xEE,0x3E,0x9C,0x7A,0x9E,0x8E,0xF6,0x6E,
  12          //0x20,0x70,0x0E,0x1C,0x3A,0xCE,0xE6,0x0A
  13          //};
  14          
  15          
  16          /*
  17          函数:INT0_SVC()
  18          功能:ZLG7290 键盘中断服务程序
  19          说明:中断触发方式选择负边沿触发,因此不必等待中断请求信号恢复为高电平
  20          */
  21          void INT0_SVC() interrupt 0
  22          {
  23   1      FlagINT = 1;
  24   1      }
  25          /*
  26          函数:Delay()
  27          功能:延时10ms~655.36s
  28          参数:
  29          t>0 时,延时(t*0.01)s
  30          t=0 时,延时655.36s
  31          说明:
  32          晶振采用11.0592MHz
  33          */
  34          void Delay(unsigned int t)
  35          {
  36   1      do{
  37   2      TH0 = 0xDC;
  38   2      TL0 = 0x00;
  39   2      TR0 = 1;
  40   2      while ( !TF0 );
  41   2      TF0 = 0;
  42   2      TR0 = 0;
  43   2      } while (--t);
  44   1      }
  45          /*
  46          函数:SystemInit()
  47          功能:系统初始化
  48          */
  49          void SystemInit()
  50          {
  51   1      I2C_Init();
  52   1      TMOD = 0x01;
  53   1      Delay(30); //等待ZLG7290 复位完毕
  54   1      }
  55          /*
C51 COMPILER V7.20   MAIL                                                                  01/01/2002 03:12:21 PAGE 2   

  56          函数:ClearAll()
  57          功能:清除所有显示
  58          */
  59          void ClearAll()
  60          {
  61   1      unsigned char x;
  62   1      for ( x=0; x<8; x++ )
  63   1      {
  64   2      ZLG7290_Download(x,0,0,31);
  65   2      }
  66   1      }
  67          /*
  68          函数:Test_DispBuf()
  69          功能:测试直接写显存
  70          */
  71          void Test_DispBuf()
  72          {
  73   1      //code char DispDat[16] =
  74   1      //{//字母AbCdEFgHiJkLoPqr 的字形数据
  75   1      //0xEE,0x3E,0x9C,0x7A,0x9E,0x8E,0xF6,0x6E,
  76   1      //0x20,0x70,0x0E,0x1C,0x3A,0xCE,0xE6,0x0A
  77   1      //};
  78   1      unsigned char n;
  79   1      unsigned char x;
  80   1      unsigned char reg;
  81   1      unsigned char dat;
  82   1      for ( n=0; n<16; n++ )
  83   1      {
  84   2      for ( x=0; x<8; x++ )
  85   2      {
  86   3      reg = ZLG7290_DpRam + x;
  87   3      dat = DispDat[n];
  88   3      ZLG7290_WriteReg(reg,dat);
  89   3      }
  90   2      Delay(50);
  91   2      }
  92   1      }
  93          
  94          
  95          
  96          /*
  97          函数:Test_DispBuf()
  98          功能:测试直接写显存
  99          */
 100          void Test_DispBuf2()
 101          {
 102   1      //unsigned char n;
 103   1      unsigned char x;
 104   1      unsigned char reg;
 105   1      unsigned char dat;
 106   1      for ( x=0; x<8; x++ )
 107   1      {
 108   2      reg = ZLG7290_DpRam + x;
 109   2      dat = DispDat[x];
 110   2      ZLG7290_WriteReg(reg,dat);
 111   2      }
 112   1      Delay(400);
 113   1      }
 114          
 115          
 116          
 117          
C51 COMPILER V7.20   MAIL                                                                  01/01/2002 03:12:21 PAGE 3   

 118          
 119          
 120          /*
 121          函数:Test_Download()
 122          功能:测试下载数据功能
 123          */
 124          void Test_Download()
 125          {
 126   1      unsigned char x;
 127   1      bit dp;
 128   1      bit flash;
 129   1      char dat;
 130   1      //点亮所有数码管
 131   1      dp = 1;
 132   1      flash = 0;
 133   1      dat = 8;
 134   1      for ( x=0; x<8; x++ )
 135   1      {
 136   2      ZLG7290_Download(x,dp,flash,dat);
 137   2      }
 138   1      Delay(100);
 139   1      //依次显示所有字型
 140   1      dp = 0;
 141   1      flash = 0;
 142   1      for ( dat=0; dat<32; dat++ )
 143   1      {
 144   2      for ( x=0; x<8; x++ )
 145   2      {
 146   3      ZLG7290_Download(x,dp,flash,dat);
 147   3      }
 148   2      Delay(50);
 149   2      }
 150   1      }
 151          /*
 152          函数:Test_ScanNum()
 153          功能:测试不同扫描位数
 154          说明:扫描位数越少,数码管就越亮
 155          */
 156          void Test_ScanNum()
 157          {
 158   1      unsigned char x;
 159   1      for ( x=0; x<8; x++ )
 160   1      {
 161   2      ZLG7290_Download(x,1,0,8);
 162   2      }
 163   1      Delay(100);
 164   1      for ( x=0; x<8; x++ )
 165   1      {
 166   2      ZLG7290_WriteReg(ZLG7290_ScanNum,x);
 167   2      Delay(100);
 168   2      }
 169   1      }
 170          /*
 171          函数:Test_Flash()
 172          功能:测试闪烁功能
 173          */
 174          void Test_Flash()
 175          {
 176   1      char dat = 0x01;
 177   1      unsigned char x;
 178   1      //显示01234567
 179   1      for ( x=0; x<8; x++ )
C51 COMPILER V7.20   MAIL                                                                  01/01/2002 03:12:21 PAGE 4   

 180   1      {
 181   2      ZLG7290_Download(x,0,0,x);
 182   2      }
 183   1      //设置闪烁控制寄存器
 184   1      ZLG7290_WriteReg(ZLG7290_FlashOnOff,0x11);//第二个参数填写占和空的时间
 185   1      //闪烁演示
 186   1      for ( x=0; x<8; x++ )
 187   1      {
 188   2      //#define ZLG7290_Flash(Fn) ZLG7290_cmd(0x70,(Fn))
 189   2      ZLG7290_Flash(dat);
 190   2      dat <<= 1;
 191   2      Delay(300);
 192   2      }
 193   1      //数码管的8 个位一起闪烁
 194   1      ZLG7290_Flash(0xFF);
 195   1      Delay(350);
 196   1      //停止闪烁
 197   1      ZLG7290_Flash(0x00);
 198   1      Delay(50);
 199   1      }
 200          /*
 201          函数:Test_SegOnOff()
 202          功能:测试段寻址功能
 203          */
 204          void Test_SegOnOff()
 205          {
 206   1      unsigned char seg;
 207   1      ClearAll();
 208   1      Delay(100);
 209   1      for ( seg=0; seg<64; seg++ )
 210   1      {
 211   2      ZLG7290_SegOnOff(seg,1);
 212   2      Delay(30);
 213   2      }
 214   1      Delay(100);
 215   1      for ( seg=0; seg<64; seg++ )
 216   1      {
 217   2      ZLG7290_SegOnOff(seg,0);
 218   2      Delay(30);
 219   2      }
 220   1      Delay(100);
 221   1      }
 222          /*
 223          函数:DispValue()
 224          功能:显示100 以内的数值
 225          参数:
 226          x:显示位置,取值0~6
 227          dat:要显示的数据,取值0~99
 228          */
 229          void DispValue(char x, unsigned char dat)
 230          {
 231   1      unsigned char d;
 232   1      d = dat / 10;
 233   1      ZLG7290_Download(x,0,0,d);
 234   1      d = dat - d * 10;
 235   1      ZLG7290_Download(x+1,0,0,d);
 236   1      }
 237          /*
 238          函数:DispHexValue()
 239          功能:以16 进制方式显示数值
 240          参数:
 241          x:显示位置,取值0~6
C51 COMPILER V7.20   MAIL                                                                  01/01/2002 03:12:21 PAGE 5   

 242          dat:要显示的数据,取值0~255
 243          */
 244          void DispHexValue(char x, unsigned char dat)
 245          {
 246   1      unsigned char d;
 247   1      d = dat / 16;
 248   1      ZLG7290_Download(x,0,0,d);
 249   1      d = dat - d * 16;
 250   1      ZLG7290_Download(x+1,0,0,d);
 251   1      }
 252          /*
 253          函数:Test_Key()
 254          功能:测试按键功能
 255          */
 256          void Test_Key()
 257          {
 258   1      unsigned char KeyValue;
 259   1      unsigned char RepeatCnt;
 260   1      unsigned char FnKeyValue;
 261   1      ClearAll();
 262   1      EA = 0;
 263   1      IT0 = 1; //负边沿触发中断
 264   1      EX0 = 1; //允许外部中断
 265   1      EA = 1;
 266   1      for (;;)
 267   1      {
 268   2      if ( FlagINT ) //如果有键按下
 269   2      {
 270   3      //清除中断标志
 271   3      FlagINT = 0;
 272   3      //读取键值、连击计数器值、功能键值
 273   3      ZLG7290_ReadReg(ZLG7290_Key,&KeyValue);
 274   3      ZLG7290_ReadReg(ZLG7290_RepeatCnt,&RepeatCnt);
 275   3      ZLG7290_ReadReg(ZLG7290_FunctionKey,&FnKeyValue);
 276   3      //显示键值、连击计数器值、功能键值
 277   3      DispValue(0,KeyValue);
 278   3      DispHexValue(3,RepeatCnt);
 279   3      DispHexValue(6,FnKeyValue);
 280   3      }
 281   2      PCON |= 0x01; //使CPU 进入空闲状态,任一中断可唤醒
 282   2      }
 283   1      }
 284          void main()
 285          {
 286   1      SystemInit(); //系统初始化
 287   1      for(;;){
 288   2      Test_DispBuf(); //测试直接写显存
 289   2      Test_DispBuf2();
 290   2      //Test_Download(); //测试下载数据
 291   2      //Test_ScanNum(); //测试不同扫描位数
 292   2      Test_Flash(); //测试闪烁功能
 293   2      //Test_SegOnOff(); //测试段寻址功能
 294   2      //Test_Key(); //测试键盘功能
 295   2      }
 296   1      //while (1);
 297   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    648    ----
   CONSTANT SIZE    =     16    ----
   XDATA SIZE       =   ----    ----
C51 COMPILER V7.20   MAIL                                                                  01/01/2002 03:12:21 PAGE 6   

   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----      23
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      1       2
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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