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

📄 zlg7290demo.lst

📁 MSP430完成对ZLG7290芯片的驱动程序
💻 LST
字号:
C51 COMPILER V7.50   ZLG7290DEMO                                                           10/29/2007 08:38:59 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE ZLG7290DEMO
OBJECT MODULE PLACED IN ZLG7290Demo.OBJ
COMPILER INVOKED BY: C:\Program Files\KEIL C51\C51\BIN\C51.EXE ZLG7290Demo.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*
   2                  ZLG7290演示程序
   3          */
   4          
   5          #include "I2C.h"
   6          #include "ZLG7290.h"
   7          
   8          //定义键盘中断标志,FlagINT=1表示有键按下
   9          volatile bit FlagINT = 0;
  10          
  11          /*
  12          函数:INT0_SVC()
  13          功能:ZLG7290键盘中断服务程序
  14          说明:中断触发方式选择负边沿触发,因此不必等待中断请求信号恢复为高电平
  15          */
  16          void INT0_SVC() interrupt 0
  17          {
  18   1              FlagINT = 1;
  19   1      }
  20          
  21          /*
  22          函数:Delay()
  23          功能:延时10ms~655.36s
  24          参数:
  25                  t>0时,延时(t*0.01)s
  26                  t=0时,延时655.36s
  27          说明:
  28                  晶振采用11.0592MHz
  29          */
  30          void Delay(unsigned int t)
  31          {
  32   1              do
  33   1              {
  34   2                      TH0 = 0xDC;
  35   2                      TL0 = 0x00;
  36   2                      TR0 = 1;
  37   2                      while ( !TF0 );
  38   2                      TF0 = 0;
  39   2                      TR0 = 0;
  40   2              } while (--t);
  41   1      }
  42          
  43          /*
  44          函数:SystemInit()
  45          功能:系统初始化
  46          */
  47          void SystemInit()
  48          {
  49   1              I2C_Init();
  50   1              TMOD = 0x01;
  51   1              Delay(30);              //等待ZLG7290复位完毕
  52   1      }
  53          
  54          /*
  55          函数:ClearAll()
C51 COMPILER V7.50   ZLG7290DEMO                                                           10/29/2007 08:38:59 PAGE 2   

  56          功能:清除所有显示
  57          */
  58          void ClearAll()
  59          {
  60   1              unsigned char x;
  61   1              for ( x=0; x<8; x++ )
  62   1              {
  63   2                      ZLG7290_Download(x,0,0,31);
  64   2              }
  65   1      }
  66          
  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          函数:Test_Download()
  96          功能:测试下载数据功能
  97          */
  98          void Test_Download()
  99          {
 100   1              unsigned char x;
 101   1              bit dp;
 102   1              bit flash;
 103   1              char dat;
 104   1      //点亮所有数码管
 105   1              dp = 1;
 106   1              flash = 0;
 107   1              dat = 8;
 108   1              for ( x=0; x<8; x++ )
 109   1              {
 110   2                      ZLG7290_Download(x,dp,flash,dat);
 111   2              }
 112   1              Delay(100);
 113   1      //依次显示所有字型
 114   1              dp = 0;
 115   1              flash = 0;
 116   1              for ( dat=0; dat<32; dat++ )
 117   1              {
C51 COMPILER V7.50   ZLG7290DEMO                                                           10/29/2007 08:38:59 PAGE 3   

 118   2                      for ( x=0; x<8; x++ )
 119   2                      {
 120   3                              ZLG7290_Download(x,dp,flash,dat);
 121   3                      }
 122   2                      Delay(50);
 123   2              }
 124   1      }
 125          
 126          /*
 127          函数:Test_ScanNum()
 128          功能:测试不同扫描位数
 129          说明:扫描位数越少,数码管就越亮
 130          */
 131          void Test_ScanNum()
 132          {
 133   1              unsigned char x;
 134   1              for ( x=0; x<8; x++ )
 135   1              {
 136   2                      ZLG7290_Download(x,1,0,8);
 137   2              }
 138   1              Delay(100);
 139   1              for ( x=0; x<8; x++ )
 140   1              {
 141   2                      ZLG7290_WriteReg(ZLG7290_ScanNum,x);
 142   2                      Delay(100);
 143   2              }
 144   1      }
 145          
 146          /*
 147          函数:Test_Flash()
 148          功能:测试闪烁功能
 149          */
 150          void Test_Flash()
 151          {
 152   1              char dat = 0x01;
 153   1              unsigned char x;
 154   1      //显示01234567
 155   1              for ( x=0; x<8; x++ )
 156   1              {
 157   2                      ZLG7290_Download(x,0,0,x);
 158   2              }
 159   1      //设置闪烁控制寄存器
 160   1              ZLG7290_WriteReg(ZLG7290_FlashOnOff,0x11);      
 161   1      //闪烁演示
 162   1              for ( x=0; x<8; x++ )
 163   1              {
 164   2                      ZLG7290_Flash(dat);
 165   2                      dat <<= 1;
 166   2                      Delay(300);
 167   2              }
 168   1      //数码管的8个位一起闪烁
 169   1              ZLG7290_Flash(0xFF);
 170   1              Delay(350);
 171   1      //停止闪烁
 172   1              ZLG7290_Flash(0x00);
 173   1              Delay(50);
 174   1      }
 175          
 176          /*
 177          函数:Test_SegOnOff()
 178          功能:测试段寻址功能
 179          */
C51 COMPILER V7.50   ZLG7290DEMO                                                           10/29/2007 08:38:59 PAGE 4   

 180          void Test_SegOnOff()
 181          {
 182   1              unsigned char seg;
 183   1              ClearAll();
 184   1              Delay(100);
 185   1              for ( seg=0; seg<64; seg++ )
 186   1              {
 187   2                      ZLG7290_SegOnOff(seg,1);
 188   2                      Delay(30);
 189   2              }
 190   1              Delay(100);
 191   1              for ( seg=0; seg<64; seg++ )
 192   1              {
 193   2                      ZLG7290_SegOnOff(seg,0);
 194   2                      Delay(30);
 195   2              }
 196   1              Delay(100);
 197   1      }
 198          
 199          /*
 200          函数:DispValue()
 201          功能:显示100以内的数值
 202          参数:
 203                  x:显示位置,取值0~6
 204                  dat:要显示的数据,取值0~99
 205          */
 206          void DispValue(char x, unsigned char dat)
 207          {
 208   1              unsigned char d;
 209   1              d = dat / 10;
 210   1              ZLG7290_Download(x,0,0,d);
 211   1              d = dat - d * 10;
 212   1              ZLG7290_Download(x+1,0,0,d);
 213   1      }
 214          
 215          /*
 216          函数:DispHexValue()
 217          功能:以16进制方式显示数值
 218          参数:
 219                  x:显示位置,取值0~6
 220                  dat:要显示的数据,取值0~255
 221          */
 222          void DispHexValue(char x, unsigned char dat)
 223          {
 224   1              unsigned char d;
 225   1              d = dat / 16;
 226   1              ZLG7290_Download(x,0,0,d);
 227   1              d = dat - d * 16;
 228   1              ZLG7290_Download(x+1,0,0,d);
 229   1      }
 230          
 231          /*
 232          函数:Test_Key()
 233          功能:测试按键功能
 234          */
 235          void Test_Key()
 236          {
 237   1              unsigned char KeyValue;
 238   1              unsigned char RepeatCnt;
 239   1              unsigned char FnKeyValue;
 240   1              ClearAll();
 241   1              EA = 0;
C51 COMPILER V7.50   ZLG7290DEMO                                                           10/29/2007 08:38:59 PAGE 5   

 242   1              IT0 = 1;        //负边沿触发中断
 243   1              EX0 = 1;        //允许外部中断
 244   1              EA = 1;
 245   1              for (;;)
 246   1              {
 247   2                      if ( FlagINT )          //如果有键按下
 248   2                      {
 249   3                      //清除中断标志
 250   3                              FlagINT = 0;
 251   3                      //读取键值、连击计数器值、功能键值
 252   3                              ZLG7290_ReadReg(ZLG7290_Key,&KeyValue);
 253   3                              ZLG7290_ReadReg(ZLG7290_RepeatCnt,&RepeatCnt);
 254   3                              ZLG7290_ReadReg(ZLG7290_FunctionKey,&FnKeyValue);
 255   3                      //显示键值、连击计数器值、功能键值
 256   3                              DispValue(0,KeyValue);
 257   3                              DispHexValue(3,RepeatCnt);
 258   3                              DispHexValue(6,FnKeyValue);
 259   3                      }
 260   2                      PCON |= 0x01;   //使CPU进入空闲状态,任一中断可唤醒
 261   2              }
 262   1      }
 263          
 264          void main()
 265          {
 266   1              SystemInit();           //系统初始化
 267   1              Test_DispBuf();         //测试直接写显存
 268   1              Test_Download();        //测试下载数据
 269   1              Test_ScanNum(); //测试不同扫描位数
 270   1              Test_Flash();           //测试闪烁功能
 271   1              Test_SegOnOff();        //测试段寻址功能
 272   1              Test_Key();             //测试键盘功能
 273   1              while (1);
 274   1      }


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