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

📄 dzshowmode2.lst

📁 该工程的开发环境为Keil uVision2,实现的功能是在16×64的点阵屏上以逐行向上移动的方式显示汉字.
💻 LST
字号:
C51 COMPILER V7.06   DZSHOWMODE2                                                           01/16/2007 16:21:23 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE DZSHOWMODE2
OBJECT MODULE PLACED IN dzshowmode2.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE dzshowmode2.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          //************************************************
   2          //在16×64的点阵显示屏上逐行向上移动显示中文汉字
   3          //点阵码由串口输入,接收点阵码采用中断方式
   4          //************************************************
   5          #include "reg52.h"
   6          #include "intrins.h"
   7          #include "absacc.h"
   8          #include <stdio.h>
   9          #define nop _nop_()
  10          #define uchar unsigned char
  11          #define DELAY_VALUE 300
  12          
  13          sbit h_clk=P1^3;        //行 clk
  14          sbit h_data=P1^6;       //行 data
  15          sbit h_str=P1^7;        //行 str
  16          sbit l_clk=P1^4;        //列 clk
  17          sbit l_data=P1^2;       //列 data
  18          sbit l_str=P1^5;        //列 str
  19          sbit h_oe=P1^0;         //行 oe
  20          int flag=0;
  21          int EvRcv=0;
  22          unsigned char rcvdata=0;        //从串口存储解手的变量
  23          int  data_count=129;
  24          int xdata xdata_count ;
  25          uchar xdata word[2000] _at_ 0x0000;
  26          int index=0;
  27          
  28          uchar xdata * data pword; //指向字的指针
  29          
  30          uchar xdata * data ptext;
  31          
  32          void init()        //清屏
  33          {
  34   1              int i;
  35   1              P1=0xff;
  36   1              P0=0x00;
  37   1              h_data=1;
  38   1              h_str=1;
  39   1              h_clk=0;
  40   1      
  41   1              for(i=0;i<32;i++)
  42   1              {
  43   2                      nop;nop;
  44   2                      h_clk=!h_clk;   
  45   2              }
  46   1      
  47   1              h_clk=0;
  48   1              l_clk=0;
  49   1      }
  50          
  51          void initial()  //系统初始化
  52          {
  53   1              IP=0x10; // 串行口定义为高优先级中断
  54   1              IE=0x97; //CPU开放中断,允许串行口中断
  55   1              TCON=0x05; //置中断触发方式为跳变触发
C51 COMPILER V7.06   DZSHOWMODE2                                                           01/16/2007 16:21:23 PAGE 2   

  56   1              TMOD=0x20; //T1工作,8位定时器/计数器
  57   1              PCON=0; //波特率选择 
  58   1              SCON=0x50;//串行口工作方式1,异步通信
  59   1              TH1=0xFD; //定时时间为1ms
  60   1              TL1=0xFD;
  61   1              TR1=1; //允许T1启动计数
  62   1              EA=1; //开中断
  63   1      
  64   1      }
  65          void delay(int i)
  66          {
  67   1              int j=0;
  68   1              i=i*DELAY_VALUE;
  69   1              while(j<i)j++;
  70   1      }
  71          
  72          void savedata(unsigned char a)
  73          {
  74   1              ptext[index]=a; //index=0
  75   1              index++;
  76   1          delay(150);
  77   1      }
  78          
  79          void input()  //取点阵码
  80          {
  81   1       uchar t;
  82   1       t=*pword;
  83   1       if(t&0x01)
  84   1       l_data=1;
  85   1       else l_data=0;
  86   1       l_clk=1;
  87   1       l_clk=0;
  88   1       if(t&0x02)
  89   1       l_data=1;
  90   1       else l_data=0;
  91   1       l_clk=1;
  92   1       l_clk=0;
  93   1       if(t&0x04)
  94   1       l_data=1;
  95   1       else l_data=0;
  96   1       l_clk=1;
  97   1       l_clk=0;
  98   1       if(t&0x08)
  99   1       l_data=1;
 100   1       else l_data=0;
 101   1       l_clk=1;
 102   1       l_clk=0;
 103   1       if(t&0x10)
 104   1       l_data=1;
 105   1       else l_data=0;
 106   1       l_clk=1;
 107   1       l_clk=0;
 108   1       if(t&0x20)
 109   1       l_data=1;
 110   1       else l_data=0;
 111   1       l_clk=1;
 112   1       l_clk=0;
 113   1       if(t&0x40)
 114   1       l_data=1;
 115   1       else l_data=0;
 116   1       l_clk=1;
 117   1       l_clk=0;
C51 COMPILER V7.06   DZSHOWMODE2                                                           01/16/2007 16:21:23 PAGE 3   

 118   1       if(t&0x80)
 119   1       l_data=1;
 120   1       else l_data=0;
 121   1       l_clk=1;
 122   1       l_clk=0;
 123   1      }
 124          
 125          void main()
 126          {
 127   1              int j=0,k=0;
 128   1              int count=0;
 129   1              int num;
 130   1              int i=0,i1,i2,i3,i4;
 131   1              int temp=384,temp1=1;
 132   1          int flag1=0;
 133   1              ptext = word;
 134   1              initial();
 135   1              init();
 136   1              while(1)
 137   1              {
 138   2                      if(flag==0)
 139   2                  {//if(flag)
 140   3                         for(num=0;num<((temp-1)/128+1)*16;num++)
 141   3                                         {
 142   4                          pword=word;
 143   4                         for(i2=0;i2<16;i2++)
 144   4                                         {//延时
 145   5                                         for(i=0;i<16;i++)
 146   5                         {
 147   6                           h_data=0;
 148   6                           nop;
 149   6                           h_clk=!h_clk;
 150   6                           nop;
 151   6                           h_clk=!h_clk;
 152   6                         }
 153   5                                         if(num<16)
 154   5                                         {
 155   6                                          for(j=0;j<=num;j++)
 156   6                         {
 157   7                                          if(flag==1)
 158   7                                                 break;
 159   7                          h_oe=0;
 160   7                                          pword=word+2*j;                        
 161   7                          for(i1=0;i1<4;i1++)
 162   7                                          {
 163   8                                              l_clk=0;
 164   8                                              input();
 165   8                                                  pword++;
 166   8                                                  input();
 167   8                                                  pword=pword+31;
 168   8                          }
 169   7                                              if(j==0) 
 170   7                          {
 171   8                           h_clk=0;
 172   8                                           h_data=1; 
 173   8                                               h_clk=!h_clk;
 174   8                                               nop;nop;
 175   8                                               h_clk=!h_clk;
 176   8                                               h_data=0;
 177   8                                           for(i3=0;i3<(30-2*num);i3++)
 178   8                                       {    
 179   9                                             nop;nop;
C51 COMPILER V7.06   DZSHOWMODE2                                                           01/16/2007 16:21:23 PAGE 4   

 180   9                                             h_clk=!h_clk;
 181   9                                           }
 182   8                          }
 183   7                          else
 184   7                          {
 185   8                            h_data=0;
 186   8                            h_clk=!h_clk;
 187   8                            nop;nop;
 188   8                            h_clk=!h_clk;
 189   8                          } 
 190   7                                         h_oe=1;
 191   7                                       
 192   7                                        for(i4=0;i4<100;i4++)
 193   7                                                 nop;
 194   7                           }//for j
 195   6                                              }
 196   5                                         else
 197   5                                         {
 198   6                           for(j=0;j<=15;j++)
 199   6                         {
 200   7                                          if(flag==1)
 201   7                                                 break;
 202   7                          h_oe=0;
 203   7                                              if(num<32)
 204   7                                              {
 205   8                                               if(j<=15-(num-15))
 206   8                                              pword=word+2*(j+num-15);
 207   8                                   else
 208   8                                                  pword=word+128+2*(j-30+num);
 209   8                                              }
 210   7                                              else
 211   7                                              {
 212   8                                               if(j<=15-(num-31))
 213   8                                                  pword=word+128+2*(j+num-31);
 214   8                                               else
 215   8                                                  pword=word+256+2*(j-46+num);
 216   8                                              }
 217   7                          for(i1=0;i1<4;i1++)
 218   7                                          {
 219   8                                              l_clk=0;
 220   8                                              input();
 221   8                                                  pword++;
 222   8                                                  input();
 223   8                                                  pword=pword+31;
 224   8                          }
 225   7                                              if(j==0) 
 226   7                          {
 227   8                           h_clk=0;
 228   8                                           h_data=1; 
 229   8                                               h_clk=!h_clk;
 230   8                                               nop;nop;
 231   8                                               h_clk=!h_clk;
 232   8                          }
 233   7                          else
 234   7                          {
 235   8                            h_data=0;
 236   8                            h_clk=!h_clk;
 237   8                            nop;nop;
 238   8                            h_clk=!h_clk;
 239   8                          } 
 240   7                                         h_oe=1;
 241   7                                       
C51 COMPILER V7.06   DZSHOWMODE2                                                           01/16/2007 16:21:23 PAGE 5   

 242   7                                        for(i4=0;i4<100;i4++)
 243   7                                                 nop;
 244   7                           }//for j
 245   6                                              }
 246   5                                              }//for i2
 247   4                                         }//for num
 248   3                        break;
 249   3                 }//if(flag)
 250   2                 if(EvRcv) //是否收到串行数据的标志位
 251   2                              {
 252   3                                      EvRcv=0;
 253   3                      flag1++;
 254   3                                      if(count==0)
 255   3                                              temp=rcvdata;
 256   3                                      else if(count==1)
 257   3                          temp=rcvdata+temp*256;
 258   3                      else if(count==2)
 259   3                          temp1=rcvdata;
 260   3                      else
 261   3                                              savedata(rcvdata);
 262   3                                      count++;
 263   3      
 264   3                                      if (count==temp+2)
 265   3                                      {
 266   4                                              flag=0;
 267   4                                              count=0;
 268   4                                              index=0;
 269   4                                              h_oe=1;
 270   4                                      }
 271   3                              }
 272   2              }
 273   1      }
 274          
 275          void Rcv_INT (void) interrupt 4 using 0
 276          {
 277   1              
 278   1              if(RI)
 279   1              {
 280   2                      h_oe=0;
 281   2                  ACC=SBUF;
 282   2                      rcvdata=ACC;
 283   2                      h_oe=0;
 284   2                      EvRcv=1;
 285   2                      RI=0;
 286   2                      flag=1;
 287   2              }
 288   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1088    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =      2    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     13      20
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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