【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


让你难过的事情,有一天,你一定会笑着说出来。–电影·《肖申克的救赎》