初学keil uvision3给单片机编程。

目前我只是在学单片机C语言,买了一本书《零基础单片机C语言程序设计》,但是在开发环境中printf语句始终无运行输出果,比如:
#include <REG52.H>
#include <stdio.h>
void main()
{
printf ("Hello World\n");
}
这个程序就不能运行。再下一个:
#include <stdio.h> //头文件

void main() //主函数
{
char a1; //定义字符型变量
char *p; //定义字符型指针
a1='A'; //变量赋值
p=&a1; //将变量a1的地址赋给p
printf("*p=%c",*p); //输出地址p中所存的数据内容
}
也不能运行。但是:
#include <REG52.H>
#include <stdio.h>
void main (void) {
#ifndef MONITOR51
SCON = 0x50;
TMOD |= 0x20;
TH1 = 221;
TR1 = 1;
TI = 1;
#endif

while (1) {
P1 ^= 0x01;
printf ("hello world\n");
}
}
这个就能运行,输出结果。就像这样:hello world
hello world
hello world
hello world
hello world
hello world
有谁知道是不是在参数或者其他方面的设置问题?望详细些,不胜感激!

第1个回答  2010-09-16
当然不能运行啦.在单片机上编程不同于在PC机编程.
你要先设置好串口通讯的格式,波特率,开中断等等才行的啊.
回去好好看书,看看这几个语句是什么意思:
SCON = 0x50;
TMOD |= 0x20;
TH1 = 221;
TR1 = 1;
TI = 1;
第2个回答  2010-09-16
你想用这个printf做什么???输出什么???向什么输出??串口吗???
51里面向串口发送数据一般都是自己写一个函数,这里和电脑上的编程可大不一样。你既然是初学,那就先不要玩串口了。先把IO口熟悉了,再看看中断和定时器吧。最后再看串口。至于那些总线扩展之类的东西最最后看吧。好好学。本回答被提问者采纳
相似回答