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); } }


浙公网安备 33010602011771号