【Proteus仿真】基于VSM 串口printf调试输出示例
【Proteus仿真】基于VSM 串口printf调试输出示例
- Proteus仿真演示

示例代码
在Proteus里面使用VSM Studio打印浮点数变量编译会出错,这里就没有打印这个类型了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61
| /\* Main.c file generated by New Project wizard \* \* Created: 周一 7月 4 2022 \* Processor: AT89C51 \* Compiler: Keil for 8051 \*/ #include <reg51.h> #include <stdio.h>
#define MAIN\_Fosc 11059200uL //定义主时钟 #define BAUD 9600 //UART baudrate
void delayms(unsigned int z) { unsigned int x,y; for(x=z;x>0;x--) for(y=112;y>0;y--); }
void tst\_printf (void) { char a = 1; int b = 12365; long c = 0x7FFFFFFF;
unsigned char x = 'A'; unsigned int y = 54321; unsigned long z = 0x4A6F6E00;
// float f\_a = 10.0; // float f\_g = 22.95;
char buf [] = "Test String";//不定长数组 char \*p = buf;
printf ("char %bd int %d long %ld\n",a,b,c); printf ("Uchar %bu Uint %u Ulong %lu\n",x,y,z); printf ("xchar %bx xint %x xlong %lx\n",x,y,z); printf ("String %s is at address %p\n",buf,p);
}
void main(void) { SCON = 0x50; //串口方式1,允许接收 // PCON=0x80;//波特率倍频,启用时,波特率翻倍 TMOD &= 0x0F; //清零 T1 的控制位 TMOD |= 0x20; //定时器1 定时方式2 ,8位自动重装载 TH1 = TL1 =256 -(MAIN_Fosc/12/32/BAUD); //计算 T1 重载值 TI = 1; TR1 = 1; //启动定时器 ET1 = 0; //禁止 T1 中断 ES = 1; //使能串口中断 EA =1; printf("Hello World!\n"); //显示Hello World while(1) { delayms(3000); tst\_printf(); } }
|
- 在VSM Studio界面选中
main.c文件后,点击运行仿真,然后暂停可以看到代码运行位置。


仿真资源
本示例基于Proteus8.12平台
1 2 3
| 链接:https://pan.baidu.com/s/1INRLd18hGqulVlpr3gyQ\_g 提取码:jkvt
|
| 让你难过的事情,有一天,你一定会笑着说出来。–电影·《肖申克的救赎》 |
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!