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

📄 testnew.lst

📁 单片机开发程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
 206          {
 207   1        Out_data2_com(0x00,0x00,0x40);
 208   1        Out_data2_com(0x10,0x00,0x41);
 209   1        Out_data2_com(0x00,0x04,0x42);
 210   1        Out_data2_com(0x10,0x00,0x43);
 211   1        Out_com(0xa7);
 212   1        Out_com(0x80);
 213   1        Out_com(0x9c);
 214   1      }
 215          /*************清RAM区*********************/
 216          void Clear_Dian(uchar a)        //0:清除文本区;1:清除图形区
 217          {
 218   1        uint l,i;
 219   1        if(a==0)
 220   1         {
 221   2           Out_data2_com(0x00,0x00,0x24);
 222   2           i=129;
 223   2         }
 224   1        if(a==1)
 225   1         {
 226   2           Out_data2_com(0x00,0x04,0x24);
 227   2           i=1025;
 228   2         }
 229   1        Out_com(0xb0);
 230   1        for(l=i;l>0;l--)
 231   1         {
 232   2           Out_data(0x00);
 233   2         }
 234   1        Out_com(0xb2);
 235   1      }
 236          /******************************************************/
 237          /**************** 显示一行英文字符*******************/
 238          void Dis_line(uchar Line_num)     //显示内容为Disp_Buff内所存内容
 239          {
 240   1        uchar l;
 241   1        Out_data2_com(Line_num*16,0x00,0x24);
C51 COMPILER V6.02  TESTNEW                                                                05/31/2005 18:15:15 PAGE 5   

 242   1        Out_com(0xb0);
 243   1        for(l=0;l<16;l++)
 244   1         {
 245   2           Out_data(Disp_Buff[l]-0x20);
 246   2         }
 247   1        Out_com(0xb2);
 248   1      }
 249          /****************************************************************************/
 250          /**************************************************/
 251          /*********键值输入程序*************/
 252          void int0(void) interrupt 2
 253          {
 254   1         uchar Key_Temp=0,m_Key=0;
 255   1         uchar i;
 256   1         EA=0;         //防止其他中断进入
 257   1         Key_Temp=KEY;  //读取键值
 258   1         Delay(12000);    //软件去抖动
 259   1         m_Key=KEY;
 260   1         if(Key_Temp==m_Key)
 261   1         {
 262   2            for(i=0;i<15;i++)
 263   2               Disp_Buff[i]=Disp_Buff[i+1];
 264   2            i=m_Key;
 265   2           /* ES=0;           //禁止串行口中断
 266   2            SBUF=i;         //发送当前键值
 267   2            while(TI==0);   //等待数据发送完毕
 268   2            TI=0;           //强发送标记位清零
 269   2            ES=1;           //允许串行口中断*/
 270   2            Send_Byte(i);
 271   2            Delay(200);
 272   2            Send_Byte(i);
 273   2            if(i<10)
 274   2              Disp_Buff[15]=0x30+i;
 275   2            if(i>=10&&i<18)
 276   2              Disp_Buff[15]=0x37+i;
 277   2         }
 278   1         EA=1;       //开启中断
 279   1      }
 280          
 281          /************************************************/
 282          /**********************************************************/
 283          /******串行口初始化子程序******/
 284          void Init_Serial_Interrupt(void)
 285          {
 286   1       SCON=0x50;                //将串行口设置成工作方式1,方式1为异步传送10位数据(1个起始位加8位数据加1个停止位
             -,无奇偶校验位)
 287   1                                 //该方式下用于数据发送,发送波特率为: BAND=(1+SMOD)*Fosc/12/32/(256-T)
 288   1       ES=1;                     //关、打开串口中断
 289   1       REN=1;                    //打开、禁止串行数据接收
 290   1       PS=0;                     //串口中断设置为0,低优先级
 291   1      }
 292          /*****通讯用定时器1参数设置*****/
 293          void Init_Serial_Timer1(void)
 294          {
 295   1       TMOD&=0x0f;               //只改变定时器1的定时设置为自重载模式,以便于进行数据通讯,先清高四位与定时器相
             -关的位
 296   1       TMOD|=0x20;               //改变定时器1的定时设置为自重载模式,以便于进行数据通讯,之后加入高四位控制字
 297   1       TH1=0xfa;                 //波特率对应的时间重载常数600为a0 1200波特率为d0,2400为e8,4800为f4,9600为fa
 298   1       TL1=0xfa;                 //计算公式为:             BAND=(1+SMOD)*Fosc/12/32/(256-T)
 299   1                                 //  Fosc=22.1184MHz,SMOD=0:  T=256-(1+SMOD)*Fosc/12/32/BAND
 300   1                                 //                             T=256-1.8432M/32/BAND
 301   1                                 //                             T=256-57600/BAND
C51 COMPILER V6.02  TESTNEW                                                                05/31/2005 18:15:15 PAGE 6   

 302   1       PCON&=0x7f;               //最高位SMOD=0时波特率不加倍,1时波特率加倍
 303   1       TR1=1;                    //打开定时器中断
 304   1       EA=1;                     //打开全局中断
 305   1      }
 306          /*****串行发送相关器件参数初始化子程序*****/
 307          void Init_Serial(void)
 308          {
 309   1       Init_Serial_Interrupt();  //使用第二套参数初始化设置串行口用于通讯
 310   1       Init_Serial_Timer1();     //设置定时器1用于串口通讯
 311   1      }
 312          /*****处理(组装)过的八位二进制数据发送子程序*****/
 313          void Outport(uchar i)//入口:参数为待发送八位二进制数据
 314          {
 315   1        ES=0;           //禁止串行口中断
 316   1        SBUF=i;         //发送当前键值
 317   1        while(TI==0);   //等待数据发送完毕
 318   1        TI=0;           //强发送标记位清零
 319   1        ES=1;           //允许串行口中断
 320   1      }
 321          /*****完整的单字节数据串行发送子程序*****/
 322          void Send_Byte(uchar datas)//入口:参数为待发送字节数据
 323          {
 324   1       uchar t;
 325   1       Init_Serial();            //串行发送相关器件参数初始化子程序
 326   1       t=TR0;                    //保存其它定时器状态
 327   1       TR0=0;                    //暂停其它定时信号
 328   1       Outport(datas);           //发送字节数据
 329   1       TR0=t;                    //还原其它定时器状态
 330   1      }
 331          /*****字(双字节)数据串行发送子程序*****/
 332          void Send_Word(uint datas)//入口:参数为待发送字数据
 333          {
 334   1       uchar t;
 335   1       Init_Serial();            //串行发送相关器件参数初始化子程序
 336   1       t=TR0;                    //保存其它定时器状态
 337   1       TR0=0;                    //暂停其它定时信号
 338   1       Outport(datas&0x00ff);     //发送最低8位字节
 339   1       Delay(20);
 340   1       Outport(datas>>8);        //发送高8位字节
 341   1       TR0=t;                    //还原其它定时器状态
 342   1      }
 343          /***************串口接收程序***************/
 344          void SerialPort_ISR(void) interrupt 4
 345          {
 346   1         uchar R_Data,i;
 347   1         ES=0;
 348   1         while(RI==0);
 349   1         RI=0;
 350   1         R_Data=SBUF;
 351   1         for(i=0;i<15;i++)
 352   1            Disp_Buff[i]=Disp_Buff[i+1];
 353   1         //R_Data=R_Data-0x80;
 354   1         if(R_Data<10)
 355   1            Disp_Buff[15]=0x30+R_Data;
 356   1         else
 357   1            Disp_Buff[15]=0x37+R_Data;
 358   1         ES=1;
 359   1      }
 360          /*****************************************************************************/
 361          void main(void)
 362          {
 363   1        uint m;
C51 COMPILER V6.02  TESTNEW                                                                05/31/2005 18:15:15 PAGE 7   

 364   1        uchar q;
 365   1        Init_Int();
 366   1        Init_Serial();
 367   1        Init_Dian();
 368   1        Clear_Dian(0);
 369   1        Clear_Dian(1);
 370   1        Init_Dian();
 371   1        Clear_Dian(0);
 372   1        Clear_Dian(1);
 373   1        Chars_dis("2005/03/29 By KP");
 374   1        Dis_line(7);
 375   1        Chars_dis("Wuhan University");
 376   1        Dis_line(0);
 377   1        Chars_dis(" NEW 8051&FPGA  ");
 378   1        Dis_line(1);
 379   1        Chars_dis("System EVM Board");
 380   1        Dis_line(2);
 381   1        Chars_dis("  Test Program  ");
 382   1        Dis_line(3);
 383   1      
 384   1        Addr=0x0000;                       //32KB 外部RAM检测
 385   1        Data_test=Data_Start;
 386   1        for(m=0;m<Max_Addr;m++)
 387   1          *Addr++=Data_test++;
 388   1        Addr=0x0000;
 389   1        Data_test=Data_Start;
 390   1        for(m=0;m<Max_Addr;m++)
 391   1          {
 392   2             if(*Addr++!=Data_test++)
 393   2               Error++;
 394   2          }
 395   1        if(Error==0)
 396   1          {
 397   2            Chars_dis("32K Ram Checking");
 398   2            Dis_line(4);
 399   2            Chars_dis(" Is Successful! ");
 400   2            Dis_line(5);
 401   2          }
 402   1        else
 403   1          {
 404   2            Chars_dis("32K Ram Checking");
 405   2            Dis_line(4);
 406   2            Chars_dis("Is Unsuccessful! ");
 407   2            Dis_line(5);
 408   2          }
 409   1        L_delay(8);
 410   1      
 411   1        Error=0;                           //1KB FPGA内部RAM检测
 412   1        Addr=0xe000;
 413   1        Data_test=Data_Start;
 414   1        for(m=0;m<Max_Addr_1K;m++)
 415   1          *Addr++=Data_test++;
 416   1        Addr=0xe000;
 417   1        Data_test=Data_Start;

⌨️ 快捷键说明

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