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

📄 g19264.lst

📁 这是一个用STC单片机作的,带液晶显示屏的万年历程序,并有串行接收部份,大家一定要珍惜用.
💻 LST
📖 第 1 页 / 共 5 页
字号:
C51 COMPILER V7.02b   G19264                                                               04/19/2008 20:43:15 PAGE 1   


C51 COMPILER V7.02b, COMPILATION OF MODULE G19264
OBJECT MODULE PLACED IN C:\Documents and Settings\Administrator.MS-C0D3DC71081D\My Documents\g19264.obj
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE g19264.c BROWSE DEBUG OBJECTEXTEND OBJECT(C:\Documents and Settings\Adminis
                    -trator.MS-C0D3DC71081D\My Documents\g19264.obj)

stmt level    source

   1          #include "g19264-ly.h"
   2          #include <stdio.h>
   3          //#include<INTRINS.H>
   4          //#include <absacc.h>
   5          
   6          #define  Uchar unsigned char
   7          #define  uchar unsigned char
   8          #define  uint unsigned int
   9          #define  ulong unsigned long int
  10          #define  byte unsigned char
  11          #define  word unsigned int
  12          #define  ulong unsigned long int
  13          
  14          extern uchar  data second, minute, hour, week, day, month, year;
  15          extern word   data date, time;//从控制器下载的时间暂存储变量
  16          uchar  ahour1=6,ahour2=11,ahour3=13,ahour4=20,ahour5=20,aminute1=40,aminute2=40,aminute3=30,aminute4=40,am
             -inute5=40;
  17          #pragma NOAREGS;
  18          extern void wr_time(void);                      //写时间到8563
  19          extern void byt_to_time(void);          //计算时间      
  20          extern void time_to_byt(void);          //计算时间      
  21          extern void rd_time(void);      //从时间芯片中读时间到second,minute,hour,week等变量中                   
  22          void Putcdot(Uchar Order);
  23          void Putedot(Uchar Order);
  24          void Putedotbig(Uchar Order);
  25          void readkey();//读键盘
  26          uchar keyscan(void);// 键扫描函数
  27          void Delay100ms(unsigned char x);
  28          void init_serial();
  29          
  30          
  31          void dpcard()//显示卡号
  32          {       uchar data  i,a,b,c,d,e,g;
  33   1              uchar temp;
  34   1          dword data temp1;
  35   1              uchar *p;
  36   1              read_count=0;
  37   1              i=0;
  38   1              BEEP=0;
  39   1          BL=0;
  40   1              Lcmcls();
  41   1              p=card_id;
  42   1      
  43   1              temp=card_id[0];  
  44   1              a=temp%10;temp=temp/10;
  45   1              b=temp%10;temp=temp/10;
  46   1              c=temp;
  47   1              col=50;row=3;
  48   1          Putedot(c);    Putedot(b);Putedot(a);
  49   1              Putedot(10);//显示空格
  50   1      
  51   1      
  52   1              temp1=card_id[1]*256+card_id[2];//合并卡号
  53   1              a=temp1%10;temp1=temp1/10;//卡号用十进制显示
C51 COMPILER V7.02b   G19264                                                               04/19/2008 20:43:15 PAGE 2   

  54   1              b=temp1%10;temp1=temp1/10;
  55   1              c=temp1%10;temp1=temp1/10;
  56   1              d=temp1%10;temp1=temp1/10;
  57   1              e=temp1%10;temp1=temp1/10;
  58   1              g=temp1;
  59   1          Putedot(g);    Putedot(e);Putedot(d);
  60   1          Putedot(c);    Putedot(b);Putedot(a);
  61   1              Putedot(10);//显示空格
  62   1      
  63   1              WDT_CONTR=WDT;//启动看门狗
  64   1              BEEP=1; 
  65   1              Delay100ms(15);
  66   1              for(i=0;i<3;i++)card_id[i]=0;//清空卡数据缓冲区
  67   1          i=0;           BL=1;
  68   1              Lcmcls();
  69   1      }
  70          
  71          void serial(void) interrupt 4           //通讯中断
  72          {
  73   1              while(RI)
  74   1                {RI=0;
  75   2                if(read_count==0)card_id[0]=SBUF;
  76   2                if(read_count==1)card_id[1]=SBUF;
  77   2                if(read_count==2)card_id[2]=SBUF;
  78   2                read_count++;
  79   2                }
  80   1      
  81   1      }
  82          
  83          void alarm_pd(void)
  84          {
  85   1              if((hour==ahour1)&(minute==aminute1))alarm=1;
  86   1              if((hour==ahour2)&(minute==aminute2))alarm=1;
  87   1              if((hour==ahour3)&(minute==aminute3))alarm=1;
  88   1              if((hour==ahour4)&(minute==aminute4))alarm=1;
  89   1              if((hour==ahour5)&(minute==aminute5))alarm=1;
  90   1      }
  91          
  92          void startbell(void)
  93          {       uchar i;
  94   1              alarm_pd();
  95   1              if(alarm==1)
  96   1                      {
  97   2                        for(i=0;i<3;i++)
  98   2                           {
  99   3                                 BEEP=0;
 100   3                                 Delay100ms(1);
 101   3                                 BEEP=1;
 102   3                                 Delay100ms(2);
 103   3                                 BEEP=0;
 104   3                                 Delay100ms(1);
 105   3                                 BEEP=1;
 106   3                                 Delay100ms(2);
 107   3                                 BEEP=0;
 108   3                                 Delay100ms(1);
 109   3                                 BEEP=1;
 110   3                                 BEEP=0;
 111   3                                 Delay100ms(3);
 112   3                                 BEEP=1;
 113   3                                 Delay100ms(10);
 114   3                         WDT_CONTR=WDT;//启动看门狗
 115   3      
C51 COMPILER V7.02b   G19264                                                               04/19/2008 20:43:15 PAGE 3   

 116   3                               }
 117   2                       }
 118   1               alarm=0;
 119   1      }
 120          
 121          void Delay100ms(unsigned char x)
 122          {   
 123   1        unsigned char i,j;
 124   1        while(x != 0)
 125   1        {
 126   2              for (j = 1 ;j <= 100 ; j++)
 127   2              {       
 128   3      //              WDT_CONTR=WDT;//启动看门狗
 129   3                      for (i = 1 ;i <= 140 ; i++){_nop_() ; _nop_() ; _nop_() ; _nop_() ;};
 130   3              }
 131   2              x--;
 132   2        }
 133   1      }
 134          
 135          
 136          uchar keyscan(void)// 键扫描函数
 137          
 138          {
 139   1              uchar scancode,tmpcode;
 140   1              P2 = 0xf0;                                                              // 发全0行扫描码
 141   1              if ((P2&0xf0)!=0xf0)                                    // 若有键按下
 142   1              {
 143   2                        Delay100ms(1);                                        // 延时10ms去抖动
 144   2                      if ((P2&0xf0)!=0xf0)                            // 延时后再判断一次,去除抖动影响
 145   2                      {
 146   3                              scancode = 0xfe;
 147   3                              while((scancode&0x10)!=0)               // 逐行扫描
 148   3                              {
 149   4                                      P2 = scancode;                          // 输出行扫描码
 150   4                                      if ((P2&0xf0)!=0xf0)            // 本行有键按下
 151   4                                      {   
 152   5                                              tmpcode = (P2&0xf0)|0x0f;/* 返回特征字节码,为1的位即对应于行和列 */
 153   5                                              return((~scancode)+(~tmpcode));
 154   5                              
 155   5                                      }
 156   4                                      else scancode = (scancode<<1)|0x01;             // 行扫描码左移一位
 157   4                              }
 158   3                      }
 159   2              }
 160   1              return('a');                                                            // 无键按下,返回值为a  
 161   1      }
 162          
 163          void readkey()//读键盘
 164          {   
 165   1          uchar key;
 166   1              key = keyscan();                                        // 调用键盘扫描函数
 167   1      //      WDT_CONTR=WDT;//启动看门狗
 168   1              switch(key)
 169   1                      {
 170   2                      case 0x11:                                              // 1行1列,数字*
 171   2                              {BEEP=0;Delay100ms(1);BEEP=1;
 172   3                               keybuf='*';
 173   3                   keydn=1; 
 174   3                  }
 175   2                              break;
 176   2      
 177   2                              case 0x21:                                              // 1行2列,数字0
C51 COMPILER V7.02b   G19264                                                               04/19/2008 20:43:15 PAGE 4   

 178   2                              {
 179   3                                      BEEP=0; Delay100ms(1);BEEP=1;
 180   3                                      keybuf = 0;keydn=1;
 181   3                              }
 182   2                              break;  
 183   2                      
 184   2                              case 0x12:                                              // 2行1列,数字7
 185   2                                      {
 186   3                                              BEEP=0; Delay100ms(1);BEEP=1;
 187   3                                              keybuf =7;keydn=1;
 188   3                                      }
 189   2                              break;  
 190   2                      
 191   2                      case 0x22:                                              // 2行2列,数字8
 192   2                                      {
 193   3                                              keybuf = 8;keydn=1;
 194   3                                              BEEP=0; Delay100ms(1);BEEP=1;
 195   3                                      }
 196   2                                      break;
 197   2      
 198   2                              case 0x42:                                              // 2行3列,数字9
 199   2                                      {
 200   3                                              keybuf = 9;keydn=1;
 201   3                                              BEEP=0; Delay100ms(1);BEEP=1;
 202   3                                      }
 203   2                                      break;
 204   2                              case 0x14:                                              // 3行1列,数字4
 205   2                                      {
 206   3                                              keybuf = 4;keydn=1;
 207   3                                              BEEP=0; Delay100ms(1);BEEP=1;
 208   3                                      }
 209   2                                      break;
 210   2                              case 0x24:                                              // 3行2列,数字5
 211   2                                      {
 212   3                                              keybuf = 5;keydn=1;
 213   3                                              BEEP=0; Delay100ms(1);BEEP=1;
 214   3                                      }
 215   2                                      break;
 216   2                              case 0x44:                                              // 3行3列,数字6
 217   2                                      {
 218   3                                              keybuf = 6;keydn=1;
 219   3                                              BEEP=0; Delay100ms(1);BEEP=1;
 220   3                                      }
 221   2                                      break;
 222   2      
 223   2                              case 0x18:                                              // 4行1列,数字3
 224   2                                      {
 225   3                                              keybuf = 1;keydn=1;
 226   3                                              BEEP=0; Delay100ms(1);BEEP=1;
 227   3                                      }
 228   2                                      break;
 229   2                              case 0x28:                                              // 4行2列,数字2
 230   2                                      {
 231   3                                              keybuf = 2;keydn=1;
 232   3                                              BEEP=0; Delay100ms(1);BEEP=1;
 233   3                                      }
 234   2                                      break;
 235   2                              case 0x48:                                              // 4行3列,数字1
 236   2                                      {
 237   3                                              keybuf = 3;keydn=1;
 238   3                                              BEEP=0; Delay100ms(1);BEEP=1;
 239   3                                      }

⌨️ 快捷键说明

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