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

📄 task.lst

📁 单片机驱动32X64点阵资料
💻 LST
📖 第 1 页 / 共 2 页
字号:
C51 COMPILER V8.08   TASK                                                                  11/20/2012 17:36:10 PAGE 1   


C51 COMPILER V8.08, COMPILATION OF MODULE TASK
OBJECT MODULE PLACED IN task.OBJ
COMPILER INVOKED BY: D:\Program Files\keil_51\C51\BIN\C51.EXE task.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include "NEW_8051.H"
   2          #include"task.h"
   3          #include <intrins.h>
   4          #include"sbit.h"
   5          //#include " uart.h"
   6          /*****************************************************
   7                 4字LED点阵屏+DS1302万年历电子钟 C 程序
   8          
   9          *******************************************************
  10          
  11           DS1302 接线图
  12          
  13                   Vcc2  CLK I/O  /RST 
  14                     
  15                      |   |   |   |
  16                     -------------------
  17                    | 8   7   6   5  |
  18                    |   DS1302       |
  19                    |                |
  20                    | 1   2   3   4  |
  21                     -------------------
  22                      |   |   |   |
  23                   VCC1           GND
  24          
  25          1 脚接+5V    2,3脚32768HZ晶振  4脚接地  5脚接S51的P02 6脚接S51的P01 7接S51的P00
  26          8脚接后备电源,可以接老计算机主板上的3.6V电池,也可以通过二级管隔离接一个大容量电解电容
  27          电压在2.5V以上即可维持
  28                                                                                                                   
  29          
  30          595连级输出数据,138行驱动。*/
  31          
  32          uchar Move;  //时间温度变量
  33          uchar Speed;
  34          uchar Flicker;
  35          uchar line;
  36          uint zimuo;
  37          uchar ucLastSec;
  38          bit c_moon;
  39          bit ri;
  40          bit r;
  41          bit zz=0;
  42          bit rr;
  43          bit nn;
  44          bit w;
  45          bit Can=1;
  46          /*****不影响其他端口的扫描*************************/
  47          void scan(unsigned char Value)
  48          {switch(Value)
  49   1              {case  15: scan0;break;
  50   2                        case  0: scan1;break;
  51   2                         case  1: scan2;break;
  52   2                          case  2: scan3;break;
  53   2                   case  3: scan4;break;
  54   2                            case  4: scan5;break;
  55   2                             case  5: scan6;break;
C51 COMPILER V8.08   TASK                                                                  11/20/2012 17:36:10 PAGE 2   

  56   2                              case  6: scan7;break;
  57   2                       case  7: scan8;break;
  58   2                             case  8: scan9;break;
  59   2                            case 9:scan10;break;
  60   2                           case 10:scan11;break;
  61   2                  case 11:scan12;break;
  62   2                        case 12:scan13;break;
  63   2                       case 13:scan14;break;
  64   2                  case 14:scan15;break;
  65   2                 default:break;
  66   2              }
  67   1      }
  68          void start(void)
  69          {
  70   1          Move=0;  
  71   1      //    E=0;                 //595使能
  72   1          zimuo=0;
  73   1          //IP=0x04;     //设置优先级 外部中断1为优先级
  74   1          TMOD=0x21;  //定时器1   0 
  75   1          TH1=0x00;   //定时50us 晶振18.432M 定时器1方式1 16位模式初始化
  76   1          TL1=0x00;    
  77   1          ET1=1;
  78   1              //TR1=1;        
  79   1              TH0 = 0x92;     //18.432M  18.2ms
  80   1          TL0 = 0x0CD;
  81   1          ET0=1;
  82   1              TR0=1;
  83   1          //外部中断
  84   1          IT0=1;      //下降沿触发中断
  85   1          EX0=1;      //开外中断1
  86   1      //    RCAP2H = 0x7D;
  87   1      //    RCAP2L = 0x0CB;
  88   1      //    ET2 = 1;
  89   1      //    TR2=1;
  90   1          CMOD = 0x80;
  91   1          CL = 0;
  92   1          CH = 0;
  93   1          CCON = 0x00;   //清中断标志
  94   1              CCAPM0 = 0x49;
  95   1              CCAP0H = 0x0E2;
  96   1          CCAP0L = 0x00;  
  97   1              CCAPM0 = 0x49; //设置PCA0为16位定时器,允许PCA模块0中断 
  98   1              EA=1;            
  99   1          ri=1;
 100   1          r=1;
 101   1          zz=0;
 102   1          rr=1;
 103   1      //      P1M0=0X1C;
 104   1      //      P1M1=0X00;
 105   1              //P3M0=0X18;
 106   1              //P3M0=0X00;    
 107   1      }
 108          /*主函数*/
 109          void main()
 110          {
 111   1          start();      
 112   1          while(1)             //重复(无限)循环显示
 113   1          {
 114   2              if(irokk==1)
 115   2              {  
 116   3                  Ircordpro();
 117   3                  irokk=0;
C51 COMPILER V8.08   TASK                                                                  11/20/2012 17:36:10 PAGE 3   

 118   3              }
 119   2      
 120   2                      if((resget==0)||(IRcord[0]==0x4a))
 121   2              {  
 122   3                  DelayMs();
 123   3                  if((resget==0)||(IRcord[0]==0x4a))
 124   3                      {
 125   4                           Set1302(starts_time);    //初始化 
 126   4                           W1302(0x8e,0x00);            //控制命令,WP=0,写操作                
 127   4                           W1302(0x90,0xa5);            //打开充电二级管  一个二级管串联一个2K电阻
 128   4                                               IRcord[0]=0x00;
 129   4                      } 
 130   3              }
 131   2              /************************/         
 132   2              du1302();         //读取 秒 分 时 日 月 星期 年
 133   2                      if((Hour==0)&&(Cent==0)&&(Sec==48)&&(Can==1)&&( AddTime ))
 134   2                      {                                                       
 135   3                              Sec=Sec/16*10+Sec%16;
 136   3                              AddTime=AddTime/16*10+AddTime%16;
 137   3                              if( !UpdateMode )
 138   3                              {
 139   4                                      AddTime=AddTime+Sec;                            
 140   4                              }
 141   3                              else
 142   3                              {
 143   4                                      AddTime=Sec-AddTime;
 144   4                                      Can=0;  
 145   4                              }
 146   3                              W1302(0x8e,0x00);
 147   3                              W1302(0x80,AddTime/10*16+AddTime%10);            
 148   3                              W1302(0x8e,0x80);
 149   3                      }
 150   2                      
 151   2                      if((Hour==0)&&(Cent==1))
 152   2                      {
 153   3                              Can=1;
 154   3                      }
 155   2              /****************************/
 156   2              if(Sec!=ucLastSec)
 157   2              {       
 158   3                  ucLastSec=Sec;
 159   3                  w=~w;

⌨️ 快捷键说明

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