Connect Keil with Proteus for debugging

晚上给同事代了两节课,放了两年的8051又拾起来弄一下。在Keil和Proteus的联调挺好用的,对于入门很有帮助,对留学生来说把两个软件调通较为困难,因此有必要写一个step-by-step的教程。(该方法也适用于ARM)

1. 装好Keil和Proteus(略)

2. 安装vdmagdi.exe

默认uVision3即可,虽然现在新的Keil都已经到5了;vdmagdi.exe的安装路径应和Keil的安装路径一致;如果不弄ARM,可以不选ARM组件。

 

 

 

 3. 在Keil中的设置

   

4. 在Proteus中的设置

 

 5. Debug

最后是一个数码管动态显示,根据同事给的开发板原理图设计,程序可直接下载到该开发板(重要的还是看懂原理图)。像74'138、74'245这样的MSI可能也只有在这种场合用一用了,但用来作为数字逻辑入门芯片还是挺好的。

程序从这儿找了一个改了改,一位改四位。

// Code to interface 7 Segment Display 1 module with 8051 

#include<reg51.h>
sbit addr0 = P2^2;
sbit addr1 = P2^3;
sbit addr2 = P2^4;

void msdelay(unsigned int time)  // Function for creating delay in milliseconds.
{
    unsigned i,j ;
    for(i=0;i<time;i++)    
    for(j=0;j<1275;j++);
}
void main()
{
        int    s = 0;
//        int    k;  
        unsigned char to_disp[]={0x3F,0x06,0x5B,0x4F,0x66,        // Array for hex values (0-F) for
                 0x6D,0x7D,0x07,0x7F,0x6F};        // common cathode 7 segment
//        P0=to_disp[s];
//        addr0 = 0;
//    addr1 = 0;    
//    addr2 = 0;                 

        while(s == 0)
      {
            addr0 = 0;
            addr1 = 0;    
            addr2 = 0;            
//            for(k=0;k<10;k++)
//        {
//         P0=to_disp[k]; 
            P0=to_disp[s];
            s++;
            msdelay(100);
//                }
        }
        while(s == 1)
      {
            addr0 = 1;
            addr1 = 0;    
            addr2 = 0;            
            P0=to_disp[s];
            s++;
            msdelay(100);
       }
        while(s == 2)
      {
            addr0 = 0;
            addr1 = 1;    
            addr2 = 0;            
            P0=to_disp[s];
            s++;
            msdelay(100);
       }
        while(s == 3)
      {
            addr0 = 1;
            addr1 = 1;    
            addr2 = 0;            
            P0=to_disp[s];
            s++;
            msdelay(100);
       }
}   

posted @ 2021-03-09 22:04  Epiapoq  阅读(376)  评论(0)    收藏  举报