📄 sy_003_2.c
字号:
/*******************************************************************************
*
* File : SY_003_2.c
* Date : 2007-10-14
* Version : 1.0
* Powerd by : shenyae86 QQ:184676957
* 中北大学信息与通信工程学院 沈阳
********************************************************************************
* Descriptoon:
* PC - MCU 串行通迅程序
* 单片机接收主机的数据,然后将数据传送到P0口, 并传回给主机;
* 当按下AN1时, 单片机发送字串
* "wellcome\n\rQQ:184676957\n\re_mail:shenyae86@163.com \n\r"
* 给主机.
* 适用于CC100A CC100B CC100C
* 产品网站 http://www.CCNUC.CN 传诚科技
*
*******************************************************************************/
#include <reg51.h>
#include <intrins.h>
unsigned char tmp;
char code str[] = "wellcome\n\rQQ:184676957\n\re_mail:shenyae86@163.com \n\r";
void send_str();
void DelayMs(unsigned char ms);
void send_char(unsigned char txd);
sbit AN1 = P3^2;
main()
{
TMOD = 0x20; // 定时器1工作于8位自动重载模式, 用于产生波特率
TH1 = 0xFD; // 波特率9600
TL1 = 0xFD;
SCON = 0x50; // 设定串行口工作方式
PCON &= 0xef; // 波特率不倍增
TR1 = 1; // 启动定时器1
IE = 0x0; // 禁止任何中断
while(1)
{
if(AN1==0) // 当按键被按下时
{
DelayMs(255); // 延时去抖动
if(AN1==1) // 再次扫描 当按键松开时
{
send_str(); // 传送字串"welcome!...
}
}
if(RI) // 是否有数据到来
{
RI = 0;
tmp = SBUF; // 暂存接收到的数据
P2 = 0x84; // 选通LED灯
P0 = tmp; // 数据传送到P0口
send_char(tmp); // 回传接收到的数据
}
}
}
void send_char(unsigned char txd)
// 传送一个字符
{
SBUF = txd;
while(!TI); // 等特数据传送
TI = 0; // 清除数据传送标志
}
void send_str()
// 传送字串
{
unsigned char i = 0;
while(str[i] != '\0')
{
SBUF = str[i];
while(!TI); // 等特数据传送
TI = 0; // 清除数据传送标志
i++; // 下一个字符
}
}
void DelayMs(unsigned char ms)
// 延时子程序
{
unsigned char i;
while(ms--)
{
for(i = 0; i < 120; i++);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -