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

📄 pointled.lst

📁 用keil环境和proteus实现的16*16四字点阵显示
💻 LST
📖 第 1 页 / 共 2 页
字号:
 176   1               {
 177   2                      TR0 = 0;
 178   2                      DisplayAll();
C51 COMPILER V8.08   POINTLED                                                              07/31/2008 16:43:00 PAGE 4   

 179   2                      DisplayAll();
 180   2                      DisplayAll();
 181   2                      TR0 = 1;
 182   2               }
 183   1      }
 184          
 185          /*----------------------------------------
 186          **函数功能:整体流动显示汉字
 187          -----------------------------------------*/
 188          void MODE1()
 189          {
 190   1              uint8 i,j;
 191   1              uint8 temp;
 192   1              data uint16 LastData[4];        //记录移位后的最终数据
 193   1      
 194   1              for(i=0; i<=15; i++)
 195   1              {       
 196   2                      LastData[0] = 0;
 197   2                      LastData[1] = 0;
 198   2                      LastData[2] = 0;
 199   2                      LastData[3] = 0;
 200   2      
 201   2                      temp = 15 - MoveState%16;              //要取得的汉字的位数
 202   2                      if(MoveState <= 15)
 203   2                      {
 204   3                              LastData[3] = ShowData[0][i] >> temp;
 205   3                      }
 206   2                      else if(MoveState >= 16 && MoveState <=31)
 207   2                      {       
 208   3                              LastData[3] = (ShowData[0][i] << (16 - temp)) | (ShowData[1][i] >> temp);
 209   3                              LastData[2] = ShowData[0][i] >> temp;   
 210   3                      }
 211   2                      else if(MoveState >= 32 && MoveState <=47)
 212   2                      {
 213   3                              LastData[3] = (ShowData[1][i] << (16 - temp)) | (ShowData[2][i] >> temp);
 214   3                              LastData[2] = (ShowData[0][i] << (16 - temp)) | (ShowData[1][i] >> temp);
 215   3                              LastData[1] = ShowData[0][i] >> temp;
 216   3                      }
 217   2                      else
 218   2                      {
 219   3                              LastData[3] = (ShowData[2][i] << (16 - temp)) | (ShowData[3][i] >> temp);
 220   3                              LastData[2] = (ShowData[1][i] << (16 - temp)) | (ShowData[2][i] >> temp);
 221   3                              LastData[1] = (ShowData[0][i] << (16 - temp)) | (ShowData[1][i] >> temp);
 222   3                              LastData[0] = ShowData[0][i] >> temp;
 223   3                      }
 224   2      
 225   2                      MR = 0;                  //清除端口数据
 226   2                      clock = 0;
 227   2                      _nop_();
 228   2                      _nop_();
 229   2                      clock = 1;
 230   2                      MR = 1;
 231   2      
 232   2                      TranCon = i;         //片选信号
 233   2                      for(j=0; j<4; j++)
 234   2                      {
 235   3                              SerSend((uint8)(LastData[j]>>8));
 236   3                              SerSend((uint8)LastData[j]);    
 237   3                      }
 238   2                      clock=0;              //锁存       
 239   2                      nop3;
 240   2                      nop3;
C51 COMPILER V8.08   POINTLED                                                              07/31/2008 16:43:00 PAGE 5   

 241   2                      clock=1;
 242   2      
 243   2                      Delay(1);       
 244   2              }
 245   1      
 246   1              if(MoveState >= 63)
 247   1              {
 248   2                      TR1 = 0;
 249   2                      DisplayAll();
 250   2                  DisplayAll();
 251   2                      DisplayAll();
 252   2                      DisplayAll();
 253   2                      TR1 = 1;
 254   2              }
 255   1      }
 256          
 257          /*----------------------------------------
 258          **函数功能:定时器0的中断处理
 259          **输入:无
 260          **输出:无
 261          -----------------------------------------*/
 262          void Timer0_int() interrupt 1 using 1
 263          {
 264   1              static flag=0;
 265   1      
 266   1              flag++;
 267   1              if (MODE == 1)
 268   1              {
 269   2                      if(flag == KeepTime)
 270   2                      {
 271   3                              flag=0;
 272   3                              State++;                 //汉字状态标志
 273   3                              State %= 16; 
 274   3                      }
 275   2              }
 276   1      
 277   1              TR0 = 0;
 278   1              TH0 += 0x3C;
 279   1              TL0 += 0xB7;
 280   1              TR0 = 1;
 281   1      }       
 282          
 283          /*----------------------------------------
 284          **函数功能:定时器1的中断处理
 285          **输入:无
 286          **输出:无
 287          -----------------------------------------*/
 288          void Timer1_int() interrupt 3 using 2
 289          {
 290   1              static flag=0;
 291   1      
 292   1              flag++;
 293   1              if(flag == KeepTime)
 294   1              {
 295   2                      flag = 0;
 296   2                      MoveState++;
 297   2                      MoveState %= 64;
 298   2              }
 299   1      
 300   1              TR1 = 0;
 301   1              TH1 += 0x3C;
 302   1              TL1 += 0xB7;
C51 COMPILER V8.08   POINTLED                                                              07/31/2008 16:43:00 PAGE 6   

 303   1              TR1 = 1;
 304   1      }       
 305          
 306          /*-----------------------------------------
 307          **函数功能:外中断0处理函数
 308          **输入:无
 309          **输出:无
 310          ------------------------------------------*/
 311          void Out0_int() interrupt 0
 312          {
 313   1              MODE++;
 314   1              MODE %= 3;
 315   1              switch(MODE)
 316   1              {
 317   2                      case 0:
 318   2                              TR0 = 0;
 319   2                              TR1 = 0;
 320   2                              break;
 321   2                      case 1:
 322   2                              TR0 = 1;
 323   2                              TR1 = 0;
 324   2                              break;
 325   2                      case 2:
 326   2                              TR0 = 0;
 327   2                              TR1 = 1;
 328   2                              break;
 329   2                      default:
 330   2                              break;
 331   2              }
 332   1      }
 333          
 334          /*-----------------------------------------
 335          **函数功能:延时
 336          ------------------------------------------*/
 337          void Delay(uint8 count)
 338          {
 339   1              uint8 i=80;
 340   1              while(count--)
 341   1                      for(;i>0;i--);
 342   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1274    ----
   CONSTANT SIZE    =    128    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      7      11
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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