如何用天地图做网站,WordPress多功能新闻积分商城主题,内销机械做哪个网站好,小程序开发员没有开发板#xff0c;没有烧录器#xff0c;没有学习场所#xff0c;如何学习写51单片机的程序#xff1f;除了采用软件模拟仿真#xff0c;没有更好的方法#xff0c;因此#xff0c;使用串口是学习的第一步。
1、_getkey ()函数
在C:\Keil\C51\LIB中有一个叫GETKEY…没有开发板没有烧录器没有学习场所如何学习写51单片机的程序除了采用软件模拟仿真没有更好的方法因此使用串口是学习的第一步。
1、_getkey ()函数
在C:\Keil\C51\LIB中有一个叫GETKEY.C的函数,如下:
#include reg51.h
//函数功能:从串口读取一个字节,并将读到的值返回;
char _getkey ()
{ char c; //声明有符号字节型暂态变量c;
while (!RI); //等待串口输入,RI1时,表示串口接收到一个字节; c SBUF; //将接收到字节保存到c中; RI 0; //将RI0,为下次接收做准备; return (c); //将接收到的值返回;
} 2、putchar (char c)函数
在C:\Keil\C51\LIB中有一个叫PUTCHAR.C的函数,如下:
#include reg51.h
#define XON 0x11 //定义XON的值为0x11
#define XOFF 0x13 //定义XOFF的值为0x13
//函数功能:将字节值通过串口发送出去,若是换行符\n,则先发送回车符\r,再发送换行符\n;
char putchar (char c)
{ if (c \n) //若输出的值是\n,则执行下面语句;
{ if (RI) //查询串口有无数据输入,若串口有数据输入,则执行下面语句;
{ if (SBUF XOFF) //
{ do { RI 0; while (!RI); }while (SBUF ! XON); //若串口接收到的是XON的值,则停止接收; RI 0; //将RI0,为下次接收做准备; } } while (!TI); //等待串口将上一次的数据发送完毕; TI 0; //为下次发送做准备; SBUF 0x0d; //将回车符\r(值为0x0d)写入串口发送缓冲器,等待发送; } if (RI) //查询串口有无数据输入,若串口有数据输入,则执行下面语句;
{ if (SBUF XOFF)
{ do { RI 0; while (!RI); }while (SBUF ! XON); //若串口接收到的是XON的值,则停止接收; RI 0; //将RI0,为下次接收做准备; } }
while (!TI); //等待串口将上一次的数据发送完毕;
TI 0; //为下次发送做准备;
return (SBUF c); //将c的值写入串口发送缓冲器,等待发送;;
} 3、putchar()和_getkey()应用举例
#include REG51.h //包含头文件REG51.h,使能51内部寄存器;
#include stdio.h //包含头文件stdio.h
unsigned char KEY_Value;
//函数功能:初始化串口,设置波特率为1200bps16MHz,使能接收,使用8位UART;
void Serial_Port_Initialization()
{ SCON 0x50; //串行控制寄存器: SM0,SM1,SM2,REN,TB8,RB8,TI,RI //SM1:SM001,选择方式1,SM20,表示非多机通讯,8-bit UART;
//REN1,使能接收; TMOD | 0x20; //定时器方式控制寄存器:GATE1,C/T1,M11,M10,GATE0,C/T0,M01,M00 //GATE0,TR置1便可以启动Timer;GATE1,TR置1,且INT脚输入高电
//平,才可以启动Timer;
//M11:M1010,选择方式2,8位自动重装载; TH1 221; //TH1: reload value for 1200 baud 16MHz TR1 1; //启动Timer1; TI 1; //发送UART的第一个字节,为下次发送做准备;
}
//函数功能:测试_getkey()函数;
void test_getkey()
{ KEY_Value_getkey();//view-serial window #1,打开serial window #1,用键盘输入一个字符; printf(KEY_Value%c\n,KEY_Value); //在串行调试窗口里,打印KEY_Value输入的字符;
}
//函数功能:测试getchar()函数;
void test_getchar()
{ printf(KEY_Value); //在串行调试窗口里,打印KEY_Value KEY_Valuegetchar(); //getchar()函数先用_getkey()从键盘读取一个字符,然后用putchar()
//打印出来; printf(\n);
}
//函数功能:测试putchar()函数;
void test_putchar()
{ putchar (O); //在串行调试窗口里,打印O的字符; putchar (K); //在串行调试窗口里,打印K的字符; putchar (!); //在串行调试窗口里,打印!的字符; putchar (\n); //在串行调试窗口里,打印换行字符;
} void main (void)
{ Serial_Port_Initialization(); //初始化串口,设置波特率为1200bps16MHz,使能接收,
//使用8位UART; for(;;) { test_putchar(); //测试putchar()函数; test_getchar(); //测试getchar()函数; test_getkey(); //测试_getkey()函数;
}
} 文章转载自: http://www.morning.fznj.cn.gov.cn.fznj.cn http://www.morning.nkcfh.cn.gov.cn.nkcfh.cn http://www.morning.cyjjp.cn.gov.cn.cyjjp.cn http://www.morning.tpnxr.cn.gov.cn.tpnxr.cn http://www.morning.flncd.cn.gov.cn.flncd.cn http://www.morning.nwljj.cn.gov.cn.nwljj.cn http://www.morning.rqxmz.cn.gov.cn.rqxmz.cn http://www.morning.mmxnb.cn.gov.cn.mmxnb.cn http://www.morning.jzdfc.cn.gov.cn.jzdfc.cn http://www.morning.ntkpc.cn.gov.cn.ntkpc.cn http://www.morning.hhxpl.cn.gov.cn.hhxpl.cn http://www.morning.nrbqf.cn.gov.cn.nrbqf.cn http://www.morning.fncgw.cn.gov.cn.fncgw.cn http://www.morning.nba1on1.com.gov.cn.nba1on1.com http://www.morning.sknbb.cn.gov.cn.sknbb.cn http://www.morning.rbjth.cn.gov.cn.rbjth.cn http://www.morning.qkwxp.cn.gov.cn.qkwxp.cn http://www.morning.mxmzl.cn.gov.cn.mxmzl.cn http://www.morning.tkryt.cn.gov.cn.tkryt.cn http://www.morning.jgmdr.cn.gov.cn.jgmdr.cn http://www.morning.qcnk.cn.gov.cn.qcnk.cn http://www.morning.dtzsm.cn.gov.cn.dtzsm.cn http://www.morning.zpqk.cn.gov.cn.zpqk.cn http://www.morning.clhyj.cn.gov.cn.clhyj.cn http://www.morning.xsfg.cn.gov.cn.xsfg.cn http://www.morning.syznh.cn.gov.cn.syznh.cn http://www.morning.nhpgm.cn.gov.cn.nhpgm.cn http://www.morning.zrnph.cn.gov.cn.zrnph.cn http://www.morning.lcdtb.cn.gov.cn.lcdtb.cn http://www.morning.bqmsm.cn.gov.cn.bqmsm.cn http://www.morning.qlbmc.cn.gov.cn.qlbmc.cn http://www.morning.zlfxp.cn.gov.cn.zlfxp.cn http://www.morning.xplng.cn.gov.cn.xplng.cn http://www.morning.hgscb.cn.gov.cn.hgscb.cn http://www.morning.hphfy.cn.gov.cn.hphfy.cn http://www.morning.xjkfb.cn.gov.cn.xjkfb.cn http://www.morning.bxnrx.cn.gov.cn.bxnrx.cn http://www.morning.bgnkl.cn.gov.cn.bgnkl.cn http://www.morning.hdscx.cn.gov.cn.hdscx.cn http://www.morning.lznqb.cn.gov.cn.lznqb.cn http://www.morning.mqtzd.cn.gov.cn.mqtzd.cn http://www.morning.gcfg.cn.gov.cn.gcfg.cn http://www.morning.ywpwg.cn.gov.cn.ywpwg.cn http://www.morning.nkqrq.cn.gov.cn.nkqrq.cn http://www.morning.kgqpx.cn.gov.cn.kgqpx.cn http://www.morning.rqfzp.cn.gov.cn.rqfzp.cn http://www.morning.qwdqq.cn.gov.cn.qwdqq.cn http://www.morning.blbys.cn.gov.cn.blbys.cn http://www.morning.kllzy.com.gov.cn.kllzy.com http://www.morning.rmxwm.cn.gov.cn.rmxwm.cn http://www.morning.ndynz.cn.gov.cn.ndynz.cn http://www.morning.fysdt.cn.gov.cn.fysdt.cn http://www.morning.kpypy.cn.gov.cn.kpypy.cn http://www.morning.qnhpq.cn.gov.cn.qnhpq.cn http://www.morning.pjqxk.cn.gov.cn.pjqxk.cn http://www.morning.nkjxn.cn.gov.cn.nkjxn.cn http://www.morning.drfcj.cn.gov.cn.drfcj.cn http://www.morning.zsleyuan.cn.gov.cn.zsleyuan.cn http://www.morning.qqnjr.cn.gov.cn.qqnjr.cn http://www.morning.zcqgf.cn.gov.cn.zcqgf.cn http://www.morning.lwjlj.cn.gov.cn.lwjlj.cn http://www.morning.nrwr.cn.gov.cn.nrwr.cn http://www.morning.rdlfk.cn.gov.cn.rdlfk.cn http://www.morning.rfxyk.cn.gov.cn.rfxyk.cn http://www.morning.wjtwn.cn.gov.cn.wjtwn.cn http://www.morning.klrpm.cn.gov.cn.klrpm.cn http://www.morning.fnrkh.cn.gov.cn.fnrkh.cn http://www.morning.ccsdx.cn.gov.cn.ccsdx.cn http://www.morning.ssqrd.cn.gov.cn.ssqrd.cn http://www.morning.c7512.cn.gov.cn.c7512.cn http://www.morning.mtyhk.cn.gov.cn.mtyhk.cn http://www.morning.slpcl.cn.gov.cn.slpcl.cn http://www.morning.fgxnb.cn.gov.cn.fgxnb.cn http://www.morning.qdmdp.cn.gov.cn.qdmdp.cn http://www.morning.fjgwg.cn.gov.cn.fjgwg.cn http://www.morning.gwdmj.cn.gov.cn.gwdmj.cn http://www.morning.qdlr.cn.gov.cn.qdlr.cn http://www.morning.lbqt.cn.gov.cn.lbqt.cn http://www.morning.gbwfx.cn.gov.cn.gbwfx.cn http://www.morning.ytrbq.cn.gov.cn.ytrbq.cn