51单片机 串口设计c语言程序简单设计

1.由上位机发送1给单片机时,蜂鸣器以400ms频率发声,发2时以200ms频率发声,发3时以100ms频率发声,发4时关闲蜂鸣器。
1.以2400bps从计算机发送任一字节数据,当单片机收到该数据后,在此数据前加上一序号然后连同此数据一起发送至计算机,当序号超过255时归零。
4.按下矩阵键盘第一行时以1200bps发送,1,2,3,4,第二行时以2400bps发送5,6,7,8,第三行以4800bps发送,9,10,11,12,第四行以9600pbs 发送,13,14,15,16.
随便做出一道题就给分,说到做到
要求用串行方式1,波特率为9600

第1个回答  2010-01-30
第一题,已经测试成功:

#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar flag, a;
sbit d = P0^0;
void init()
{
TMOD = 0x20; //设置定时器1为工作方式2
TH1 = 0xfd;
TL1 = 0xfd;
TR1 = 1; //开定时器1
REN = 1; //开串口通信.
SM0 = 0; //设置串口通信方式1
SM1 = 1;
EA = 1; //开总中断.
ES = 1; //开串口中断.
}
void delay(uint z)
{
uint x, y;
for(x = z; x > 0; x--) for(y = 110; y > 0; y--);
}

void main()
{
init();
a = '4';
while(1) {
if(a == '1') {
d = 0; delay(400);
d = 1; delay(400);
}
else if(a == '2') {
d = 0; delay(200);
d = 1; delay(200);
}
else if(a == '3') {
d = 0; delay(100);
d = 1; delay(100);
}
else if(a == '4') {
d = 1;
}
}
}

void ser() interrupt 4
{
if (TI == 1) {
TI = 0;
}
else if (RI == 1) {
RI = 0;
a = SBUF; //中间变量.
flag = 1;
}
}本回答被提问者采纳
第2个回答  2010-01-30
QQ358357912
我也正在学习,一起交流吧
第3个回答  2010-01-30
问题不难...自己慢慢想...
相似回答