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

📄 xians164.lst

📁 本程序针对74x164的LED显示驱动程序 2.I/O脚使用 io_74x164clk // 串行通信时钟
💻 LST
字号:
C51 COMPILER V7.50   XIANS164                                                              08/08/2006 22:26:33 PAGE 1   


C51 COMPILER V7.50, COMPILATION OF MODULE XIANS164
OBJECT MODULE PLACED IN xians164.OBJ
COMPILER INVOKED BY: D:\Keil\C51\BIN\c51.exe xians164.c DB OE

line level    source

   1           /*********************************************
   2          1.功能:  本程序针对74x164的LED显示驱动程序
   3          2.I/O脚使用
   4                                  io_74x164clk;  // 串行通信时钟,上升沿有效
   5                                  io_74x164data; // 串行数据,单向通信
   6                                  
   7          3.调试环境:12M晶振(51系列12时钟模式)
   8                                  若为其他时钟则作如下修改:
   9                                                  (1)
  10                                                  (2)
  11          
  12          3.程序大小(ROM估计):
  13                                          
  14          4.数据大小(RAM估计):
  15          
  16          5.运行时间(与调用函数有关):
  17          
  18          
  19          ***********************************************/
  20                                          
  21          //#define __XIANS164_DEBUG__
  22          #ifdef   __XIANS164_DEBUG__
              
                      #include<wywcomm.h>
                      #include<reg51.h>
              
                      sbit io_74x164clk =P0^7;  // 串行通信时钟,上升沿有效
                      sbit io_74x164data=P0^6; // 串行数据,单向通信
              
              
                      //此模块调用其它模块的外部变量和函数的声明(此程序无)
              
              
              #else
  35           
  36                   #include  "e:\diansai2006\c8051f020\src\system.h"        //所有的项目用相同的系统头文件,但存放的路径不同,各
             -自存放在对应的项目文件夹。
  37          
  38          
  39          #endif
  40          
  41          
  42          //此模块的宏定义(常数等)
  43          
  44          
  45          
  46          //此模块必要的库函数包含(include)
  47          
  48          #include<intrins.h>
  49          
  50          #include<math.h>
  51          
  52          //全局变量(静态或一般)的定义
  53          
  54          
C51 COMPILER V7.50   XIANS164                                                              08/08/2006 22:26:33 PAGE 2   

  55                  
  56          //以下为函数定义
  57          
  58          
  59          
  60          //***********写164************************
  61          static void write(uint8 shu)
  62          {
  63   1       int8 d,shuju;
  64   1             shuju=shu;
  65   1      
  66   1           for(d=8;d>0;d--)
  67   1             {
  68   2                      
  69   2                      io_74x164clk=0;
  70   2      
  71   2              shuju <<= 1 ;
  72   2      
  73   2                      io_74x164data = CY;
  74   2      
  75   2                      io_74x164clk=1;   
  76   2                      
  77   2              }             
  78   1      }
  79          //****************清屏***************//
  80          
  81          
  82          void v_74x164Ini_f(void) 
  83           {
  84   1         uint8 i;
  85   1         for(i=64;i>0;i--)
  86   1           { 
  87   2              
  88   2              io_74x164clk=0;
  89   2              
  90   2                 io_74x164data=1;
  91   2             
  92   2             io_74x164clk=1;   
  93   2             
  94   2           }             
  95   1        }
  96          
  97          void v_74x164WriteNumber_f(uint8 data *a,uint8 d,int16 shuju) 
  98          //**************************************************************************************
  99          //功能:        显示六位以下的带小数点的数字
 100          //说明:    输入*a    表示:第8、7位相应显示内容a[1]、a[0](未译码),取值范围:两个字节。
 101          //          输入 d    表示:小数点相对数字的显示位置 ,                   取值范围:0~4。(超出范围不显示)
 102          //              输入shuju 表示:显示任意有符号16位整数,                          取值范围:-32768~32767。
 103          //***************************************************************************************
 104           {
 105   1        bit b0=1,b1=0,zf=1;
 106   1        int8 xx;
 107   1        uint8 i;  
 108   1        uint8 code yima[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};/*0,1,2,3,4,5,6,7,8,9,-,*/
 109   1      
 110   1         write(a[1]);   //第8位显示内容
 111   1      
 112   1         write(a[0]);  //     第7位显示内容
 113   1        
 114   1         if(shuju >= 0) {zf=0;write(0xff);} //第6位显示内容,判断1    
 115   1        
 116   1         shuju=abs(shuju);//取绝对值
C51 COMPILER V7.50   XIANS164                                                              08/08/2006 22:26:33 PAGE 3   

 117   1      
 118   1          for(xx=4;xx >= 0;xx--)                     //写入5次数字
 119   1         {
 120   2           switch(xx)
 121   2            {
 122   3              case 4: i=shuju/10000;break;
 123   3              case 3: i=shuju%10000/1000;break;
 124   3              case 2: i=shuju%1000/100;break;
 125   3              case 1: i=shuju%100/10;break;
 126   3              case 0: i=shuju%10;
 127   3             }  
 128   2         
 129   2               if(i||(d==xx)||b1||(xx==0)) 
 130   2                      {
 131   3                              if(b0&&zf) {write(0xBF);b0=0;} 
 132   3                              if(d==xx)  write(yima[i]&0x7f);
 133   3                              else    write(yima[i]);  
 134   3                              b1=1;
 135   3                       }
 136   2                else      write(0xff);                
 137   2          }
 138   1      }           
 139          
 140          
 141          
 142          
 143          
 144          void v_74x164WriteNDig_f(uint8 data *a,uint8 n)
 145          //**************************************************************************************
 146          //功能:        显示1位以上的未译码的数
 147          //说明:    输入*a    表示:相应数组位显示内容,显示a[n-1]..a[0](未译码)。
 148          //          输入 n    表示:需要显示的位数                        取值范围:0以上
 149          //***************************************************************************************
 150          { 
 151   1        uint8 i;
 152   1        for(i=n;i>0;i--)
 153   1        write(a[n-1]);
 154   1      
 155   1      }
 156          
 157          
 158          
 159          
 160          
 161          
 162          
 163          
 164          
 165          #ifdef   __XIANS164_DEBUG__
              
              void main()
              { 
                uint8 data pp[]={0x8c,0xc6};//显示“PC”
              
                v_74x164Ini_f();
                
                v_74x164WriteNumber_f(pp,5,-12006);
              
                v_BC7281AWriteOneDig_f(pp,2);
              
              
               
C51 COMPILER V7.50   XIANS164                                                              08/08/2006 22:26:33 PAGE 4   

              while(1) ;
              }
              
              #endif


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    294    ----
   CONSTANT SIZE    =     10    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       4
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       3
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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