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

📄 yk.lst

📁 这是一个51单片机实现的控制器程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
C51 COMPILER V6.12  YK                                                                     10/22/2004 10:23:10 PAGE 1   


C51 COMPILER V6.12, COMPILATION OF MODULE YK
OBJECT MODULE PLACED IN C:\MY\DDYK\YK.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE C:\MY\DDYK\YK.C DB SB OE

stmt level    source

   1          #include "REGX52.h"
   2          #include "yk.h"
   3          //****** HD7279A 指令 ******
   4          #define CMD_RESET 0xa4
   5          #define CMD_TEST 0xbf
   6          #define DECODE0 0x80
   7          #define DECODE1 0xc8
   8          #define CMD_READ 0x15
   9          #define UNDECODE 0x90
  10          #define RTL_CYCLE 0xa3
  11          #define RTR_CYCLE 0xa2
  12          #define RTL_UNCYL 0xa1
  13          #define RTR_UNCYL 0xa0
  14          #define ACTCTL 0x98
  15          #define SEGON 0xe0
  16          #define SEGOFF 0xc0
  17          #define BLINKCTL 0x88
  18                                      //Ds12c887
  19          /* 所有的置位使用或操作,清除使用与操作 */
  20          
  21          //#define MASK_SETB_SET         0x80            /* 禁止刷新 */
  22          //#define MASK_CLR_SET         0x7f            /* 使能刷新 */
  23          
  24          
  25          
  26          extern void long_delay(void);						// 长延时
  27          extern void short_delay(void);                                          // 短暂延时
  28          extern void delay10ms(unsigned char);
  29          extern void write7279(unsigned char, unsigned char,unsigned char);// 发送一个字节	// 写入到HD7279
  30          
  31          extern unsigned char read7279(unsigned char);			// 从HD7279读出
  32          extern void send_byte(unsigned char,unsigned char);
  33          extern unsigned char receive_byte(void);
  34          extern void WriteSR(BYTE cData);
  35          extern void Write1B(BYTE cData,BYTE cAddress,bit bRegion);
  36          extern BYTE Read1B(BYTE cAddress,bit bRegion);
  37          void Disp();
  38          void YkPro(unsigned char,unsigned char);
  39          BYTE data Station;
  40          BYTE data First_Flag;
  41          BYTE data Time_Counter;
  42          BYTE data YkStart,YkCount;
  43          BYTE data Rcv_Count;
  44          BYTE data Rcv_Wp,Rcv_Rp;
  45          bit  data Trs_Flag,Rcv_Flag;
  46          bit  data Flash_Flag;
  47          BYTE data Trs_Wp,Trs_Rp;
  48          BYTE data Trs_Buf[25];
  49          BYTE idata Rcv_Buf[30];
  50          BYTE Tmp1,Yk_Fresh;
  51          BYTE idata YkNo,YkHf,YkStatus,Yk_En;
  52          bit  data Yk_All,Disp_Flag,Yk_Self;
  53          extern BYTE data Trs_Comm,Trs_Comm_Bak;
  54          BYTE code F_TAB[4]={0x01,0x04,0x10,0x40};
  55          BYTE code H_TAB[4]={0x02,0x08,0x20,0x80};
C51 COMPILER V6.12  YK                                                                     10/22/2004 10:23:10 PAGE 2   

  56          
  57          BYTE xdata Second       _at_ 0xf00;
  58          BYTE xdata Second_Alarm _at_ 0xf01;
  59          BYTE xdata Minute       _at_ 0xf02;
  60          BYTE xdata Minute_Alarm _at_ 0xf03;
  61          BYTE xdata Hour         _at_ 0xf04;
  62          BYTE xdata Hour_Alarm   _at_ 0xf05;
  63          BYTE xdata Week         _at_ 0xf06;
  64          BYTE xdata Day          _at_ 0xf07;
  65          BYTE xdata Month         _at_ 0xf08;
  66          BYTE xdata Year          _at_ 0xf09;
  67          BYTE xdata RegA          _at_ 0xf0a;
  68          BYTE xdata RegB          _at_ 0xf0b;
  69          BYTE xdata RegC          _at_ 0xf0c;
  70          BYTE xdata RegD          _at_ 0xf0d;
  71          BYTE xdata Century       _at_ 0xf32;
  72          BYTE xdata Nvram[10]     _at_ 0xf33;
  73          
  74          
  75          
  76          BYTE xdata Yk0 _at_ 0xf000;
  77          BYTE xdata Yk1 _at_ 0xf100;
  78          BYTE xdata Yk2 _at_ 0xf200;
  79          BYTE xdata Yk3 _at_ 0xf300;
  80          BYTE xdata Yk4 _at_ 0xf400;
  81          BYTE xdata Yk5 _at_ 0xf500;
  82          BYTE xdata Yk6 _at_ 0xf600;
  83          BYTE xdata Yk7 _at_ 0xf700;
  84          BYTE xdata Yk8_9 _at_ 0xff00;
  85          struct Yk_Time_Struct
  86          {
  87           BYTE Minute;
  88           BYTE Hour;
  89          } Yk_Time;//,Yk_Time_Rd;
  90          
  91          void timer0(void) interrupt 1 //using 2
  92          {
  93   1        Time_Counter++;
  94   1        Rcv_Count++;
  95   1        if(YkStart)YkCount++;
  96   1        TL0=0;
  97   1        TH0=0;
  98   1      
  99   1       }
 100          
 101          
 102          void serial_int(void) interrupt 4 //using 1
 103          {
 104   1       EA=0;
 105   1       if (RI)
 106   1        {
 107   2         RI=0;
 108   2         Rcv_Count=0;
 109   2         if(Rcv_Wp==29)
 110   2          {
 111   3           Rcv_Wp=0;
 112   3          }
 113   2         Rcv_Buf[Rcv_Wp]=SBUF;
 114   2         if(
 115   2             Rcv_Buf[Rcv_Wp-2]==0xeb && Rcv_Buf[Rcv_Wp-1]==0x90
 116   2            &&Rcv_Wp<8)
 117   2            {
C51 COMPILER V6.12  YK                                                                     10/22/2004 10:23:10 PAGE 3   

 118   3            	Rcv_Flag=1;
 119   3            	Rcv_Rp=Rcv_Wp;
 120   3            }
 121   2         Rcv_Wp++;
 122   2        }
 123   1       if (TI)
 124   1        {
 125   2         TI=0;
 126   2         if(Trs_Wp!=Trs_Rp)
 127   2          {
 128   3          	SBUF=Trs_Buf[Trs_Rp];
 129   3          	Trs_Rp++;
 130   3          }
 131   2          else  DIR485=1;
 132   2      
 133   2        }
 134   1       EA=1;
 135   1       }
 136          
 137           void init()
 138          {
 139   1         BYTE i;
 140   1         Yk_Clr=0;
 141   1         Yk_UnDo=1;
 142   1         Yk_UnDo=0;
 143   1         Yk_UnDo=1;
 144   1      
 145   1         TMOD=0x21;
 146   1         TH1=0xfa;   //9600-FD  4800-FA 2400-F4 1200-E8
 147   1         TL1=0xfa;
 148   1         SCON=0x50;
 149   1         PCON=0;
 150   1         TL0=0x0;
 151   1         TH0=0x0;
 152   1      
 153   1         ET0=1;
 154   1        // EX1=1;
 155   1         ES=1;
 156   1         TR0=1;
 157   1         TR1=1;
 158   1        // ET1=1;
 159   1      
 160   1         EA=1;
 161   1         TI=0;
 162   1      
 163   1         Cs12887=0;
 164   1         RegA=0x20;
 165   1         RegB=0x06;
 166   1         Cs12887=1;
 167   1         send_byte(CMD_TEST,0);				// 测试指令
 168   1         send_byte(CMD_TEST,1);
 169   1         P1_7=P1_5=1;
 170   1         for(i=0;i<200;i++)
 171   1           {
 172   2           long_delay();
 173   2           Run=~Run;
 174   2           }
 175   1         send_byte(CMD_RESET,0);     // 清除显示
 176   1         send_byte(CMD_RESET,1);     // 清除显示
 177   1         P1_7=P1_5=1;
 178   1         WriteSR(0x30);       // WatchDog DISABLE
 179   1           First_Flag=Read1B(1,0);
C51 COMPILER V6.12  YK                                                                     10/22/2004 10:23:10 PAGE 4   

 180   1           if(First_Flag!=0x55)
 181   1             {
 182   2              First_Flag=0x55;
 183   2              Write1B(0x55,1,0);
 184   2              for(i=0;i<10;i++)
 185   2               {
 186   3                Write1B(0xff,10+i,0);
 187   3               }
 188   2              for(i=20;i<160;i++)
 189   2               {
 190   3                Write1B(0x0,i,0);
 191   3               }
 192   2      
 193   2              Write1B(1,0,0);
 194   2             }
 195   1           Station=Read1B(0,0);
 196   1           Disp_Flag=1;
 197   1           YkStart=0;
 198   1      
 199   1       }
 200          
 201          void Disp()
 202          {
 203   1      BYTE i,Led,Seg,Status,Status_Tmp;
 204   1        Disp_Flag=0;
 205   1        for(i=0;i<4;i++)
 206   1            {
 207   2             Seg=0;
 208   2             if(i<2)
 209   2               {
 210   3                Status= Read1B(10+i,0);
 211   3               }
 212   2             if(i==2)
 213   2              {
 214   3               Status= Read1B(12,0);
 215   3               Status>>=4;
 216   3               Status_Tmp= Read1B(13,0);
 217   3               Status_Tmp<<=4;
 218   3               Status|=Status_Tmp;
 219   3              }
 220   2              if(i==3)
 221   2              {
 222   3               Status= Read1B(13,0);
 223   3               Status>>=4;
 224   3               Status_Tmp= Read1B(14,0);
 225   3               Status_Tmp<<=4;
 226   3               Status|=Status_Tmp;
 227   3              }
 228   2      
 229   2             if (Status&0x01) Seg|=0x40;
 230   2             if (Status&0x02) Seg|=0x20;
 231   2             if (Status&0x04) Seg|=0x10;
 232   2             if (Status&0x08) Seg|=0x08;
 233   2             if (Status&0x10) Seg|=0x04;
 234   2             if (Status&0x20) Seg|=0x02;
 235   2             if (Status&0x40) Seg|=0x01;
 236   2             if (Status&0x80) Seg|=0x80;
 237   2             Yk_En=0;
 238   2             if(i<2)
 239   2               {
 240   3                Status= Read1B(15+i,0);
 241   3               }
C51 COMPILER V6.12  YK                                                                     10/22/2004 10:23:10 PAGE 5   

 242   2             if(i==2)
 243   2              {
 244   3               Status= Read1B(17,0);
 245   3               Status>>=4;
 246   3               Status_Tmp= Read1B(18,0);
 247   3               Status_Tmp<<=4;
 248   3               Status|=Status_Tmp;
 249   3              }
 250   2              if(i==3)
 251   2              {
 252   3               Status= Read1B(18,0);
 253   3               Status>>=4;
 254   3               Status_Tmp= Read1B(19,0);
 255   3               Status_Tmp<<=4;
 256   3               Status|=Status_Tmp;
 257   3              }
 258   2             if (Status&0x01) Yk_En|=0x40;
 259   2             if (Status&0x02) Yk_En|=0x20;
 260   2             if (Status&0x04) Yk_En|=0x10;
 261   2             if (Status&0x08) Yk_En|=0x08;
 262   2             if (Status&0x10) Yk_En|=0x04;
 263   2             if (Status&0x20) Yk_En|=0x02;
 264   2             if (Status&0x40) Yk_En|=0x01;
 265   2             if (Status&0x80) Yk_En|=0x80;
 266   2             switch (i)

⌨️ 快捷键说明

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