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

📄 zlg7290b.lst

📁 利用键盘显示专用驱动芯片7290
💻 LST
字号:
C51 COMPILER V7.50   ZLG7290B                                                              07/20/2007 15:52:49 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE ZLG7290B
OBJECT MODULE PLACED IN .\ZLG7290B.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE F:\0217\新建文件夹2\ZLG7290B.c BROWSE INTVECTOR(0X8000) DEBUG OBJECTEXTEND 
                    -PRINT(.\ZLG7290B.lst) OBJECT(.\ZLG7290B.obj)

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   1       { 
  35   2        TH0 = 0xDC; 
  36   2        TL0 = 0x00; 
  37   2        TR0 = 1; 
  38   2         while ( !TF0 ); 
  39   2        TF0 = 0; 
  40   2        TR0 = 0; 
  41   2       } while (--t); 
  42   1      } 
  43           
  44          /* 
  45          函数:SystemInit() 
  46          功能:系统初始化 
  47          */ 
  48          void SystemInit() 
  49          { 
  50   1       I2C_Init(); 
  51   1        TMOD = 0x01; 
  52   1       Delay(30);   //等待ZLG7290复位完毕 
  53   1      } 
  54           
C51 COMPILER V7.50   ZLG7290B                                                              07/20/2007 15:52:49 PAGE 2   

  55          /* 
  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          /* 
  69          函数:Test_DispBuf() 
  70          功能:测试直接写显存 
  71          */ 
  72          void Test_DispBuf() 
  73          { 
  74   1        code char DispDat[16] = 
  75   1       {//字母AbCdEFgHiJkLoPqr的字形数据 
  76   1        0xEE,0x3E,0x9C,0x7A,0x9E,0x8E,0xF6,0x6E, 
  77   1        0x20,0x70,0x0E,0x1C,0x3A,0xCE,0xE6,0x0A 
  78   1        
  79   1       }; 
  80   1        unsigned char n; 
  81   1        unsigned char x; 
  82   1        unsigned char reg; 
  83   1        unsigned char dat; 
  84   1        for ( n=0; n<16; n++ ) 
  85   1       { 
  86   2         for ( x=0; x<8; x++ ) 
  87   2        { 
  88   3            reg = ZLG7290_DpRam + x; 
  89   3         dat = DispDat[n]; 
  90   3         ZLG7290_WriteReg(reg,dat); 
  91   3        } 
  92   2        Delay(50); 
  93   2       } 
  94   1      } 
  95           
  96          /* 
  97          函数:Test_Download() 
  98          功能:测试下载数据功能 
  99          */ 
 100          void Test_Download() 
 101          { 
 102   1        unsigned char x; 
 103   1        bit dp; 
 104   1        bit flash; 
 105   1        char dat; 
 106   1      //点亮所有数码管 
 107   1        dp =1; 
 108   1        flash = 0; 
 109   1       dat = 8; 
 110   1        for ( x=0; x<8; x++ ) 
 111   1       { 
 112   2        ZLG7290_Download(x,dp,flash,dat); 
 113   2       } 
 114   1       Delay(100); 
 115   1      //依次显示所有字型 
 116   1        dp = 1; 
C51 COMPILER V7.50   ZLG7290B                                                              07/20/2007 15:52:49 PAGE 3   

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

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

 241          { 
 242   1        unsigned char KeyValue; 
 243   1        unsigned char RepeatCnt; 
 244   1        unsigned char FnKeyValue; 
 245   1       ClearAll(); 
 246   1        EA = 0; 
 247   1        IT0 = 1;  //负边沿触发中断 
 248   1        EX0 = 1;  //允许外部中断 
 249   1        EA = 1; 
 250   1        for (;;) 
 251   1       { 
 252   2         if ( FlagINT )    //如果有键按下 
 253   2        { 
 254   3         //清除中断标志 
 255   3         FlagINT = 0; 
 256   3         //读取键值、连击计数器值、功能键值 
 257   3         ZLG7290_ReadReg(ZLG7290_Key,&KeyValue); 
 258   3       
 259   3         ZLG7290_ReadReg(ZLG7290_RepeatCnt,&RepeatCnt); 
 260   3         ZLG7290_ReadReg(ZLG7290_FunctionKey,&FnKeyValue); 
 261   3         //显示键值、连击计数器值、功能键值 
 262   3         DispValue(0,KeyValue); 
 263   3         DispHexValue(3,RepeatCnt); 
 264   3         DispHexValue(6,FnKeyValue); 
 265   3        } 
 266   2        PCON |= 0x01;  //使CPU进入空闲状态,任一中断可唤醒 
 267   2       } 
 268   1      } 
 269           
 270          void main() 
 271          {   unsigned char a; 
 272   1       SystemInit();   //系统初始化 
 273   1       /*Test_DispBuf();   //测试直接写显存 
 274   1       Test_Download();  //测试下载数据 
 275   1       Test_ScanNum();  //测试不同扫描位数 
 276   1       Test_Flash();   //测试闪烁功能                                                                          
 277   1       Test_SegOnOff();  //测试段寻址功能  */
 278   1       Test_Key();   //测试键盘功能              
 279   1      
 280   1      
 281   1      
 282   1      
 283   1        
 284   1        
 285   1       
 286   1        
 287   1       while (1);   
 288   1      } 
*** WARNING C280 IN LINE 271 OF F:\0217\新建文件夹2\ZLG7290B.C: 'a': unreferenced local variable


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


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

⌨️ 快捷键说明

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