51单片机第1步_putchar()和_getkey()应用

没有开发板,没有烧录器,没有学习场所,如何学习写51单片机的程序?除了采用软件模拟仿真,没有更好的方法,因此,使用串口是学习的第一步。

1、_getkey ()函数

在C:\Keil\C51\LIB中有一个叫GETKEY.C的函数,如下:

#include <reg51.h>

//函数功能:从串口读取一个字节,并将读到的值返回;

char _getkey ()

{ char c;        //声明有符号字节型暂态变量c;

while (!RI);   //等待串口输入,RI=1时,表示串口接收到一个字节;

  c = SBUF;    //将接收到字节保存到c中;

  RI = 0;       //将RI=0,为下次接收做准备;

  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;  //将RI=0,为下次接收做准备;

         }

       }

     while (!TI);  //等待串口将上一次的数据发送完毕;

     TI = 0;      //为下次发送做准备;

     SBUF = 0x0d;  //将回车符'\r'(值为0x0d)写入串口发送缓冲器,等待发送;

   }

if (RI) //查询串口有无数据输入,若串口有数据输入,则执行下面语句;

{ if (SBUF == XOFF)

{ do { RI = 0;

            while (!RI);

          }while (SBUF != XON); //若串口接收到的是XON的值,则停止接收;

        RI = 0;  //将RI=0,为下次接收做准备;

      }

   }

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;

//函数功能:初始化串口,设置波特率为1200bps@16MHz,使能接收,使用8位UART;

void Serial_Port_Initialization()

{ SCON  = 0x50; //串行控制寄存器: SM0,SM1,SM2,REN,TB8,RB8,TI,RI

                //SM1:SM0=01,选择方式1,SM2=0,表示非多机通讯,8-bit UART;

//REN=1,使能接收;

  TMOD |= 0x20; //定时器方式控制寄存器:GATE1,C/T1,M11,M10,GATE0,C/T0,M01,M00

                //GATE=0,TR置1便可以启动Timer;GATE=1,TR置1,且INT脚输入高电

//平,才可以启动Timer;

//M11:M10=10,选择方式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_Value=getchar();  //getchar()函数先用_getkey()从键盘读取一个字符,然后用putchar()

//打印出来;

  printf("\n");

}

//函数功能:测试putchar()函数;

void test_putchar()

{ putchar ('O');   //在串行调试窗口里,打印O的字符;

  putchar ('K');   //在串行调试窗口里,打印K的字符;

  putchar ('!');   //在串行调试窗口里,打印!的字符;

  putchar ('\n');  //在串行调试窗口里,打印换行字符;

}

void main (void)

{ Serial_Port_Initialization();  //初始化串口,设置波特率为1200bps@16MHz,使能接收,

//使用8位UART;

  for(;;)

    { test_putchar();  //测试putchar()函数;

  test_getchar();  //测试getchar()函数;

  test_getkey();  //测试_getkey()函数;

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/37866.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DataWhale-吃瓜教程学习笔记 (五)

学习视频&#xff1a;第4章-决策树_哔哩哔哩_bilibili 西瓜书对应章节&#xff1a; 第四章 4.1&#xff1b;4.2 文章目录 决策树算法原理- 逻辑角度- 几何角度 ID3 决策树- 自信息- 信息熵 &#xff08;自信息的期望&#xff09;- 条件熵 &#xff08; Y 的信息熵关于概率分布 …

python selenium 打开网页

selenium工具类 - 文件名 seleniumkit.py 代码如下 # -*- coding:utf-8 _*-from selenium import webdriverimport os import timefrom selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC from seleniu…

Ascend基于自定义算子工程的算子开发

环境准备 见https://gitee.com/zaj1414904389/ascend-tutorial.git 工程创建 CANN软件包中提供了工程创建工具msopgen&#xff0c;开发者可以输入算子原型定义文件生成Ascend C算子开发工程 [{"op": "AddCustom","input_desc": [{"name…

CVPR2024 轨迹预测系列(一)

CVPR2024 轨迹预测系列&#xff08;一&#xff09; 文章目录 CVPR2024 轨迹预测系列&#xff08;一&#xff09;一、Adapting to Length Shift: FlexiLength Network for Trajectory Prediction.1、Abstract2、FlexiLength Network3、Datasets4、Experiments5、Implementation …

分类预测 | PSO-PNN基于粒子群算法优化概率神经网络的数据分类预测(Matlab)

分类预测 | ZOA-PCNN-AT-SVM斑马优化并行卷积-支持向量机融合注意力机制的故障识别 目录 分类预测 | ZOA-PCNN-AT-SVM斑马优化并行卷积-支持向量机融合注意力机制的故障识别分类效果基本描述程序设计参考资料 分类效果 基本描述 1.PSO-PNN基于粒子群算法优化概率神经网络的数据…

长鑫存储母公司斥资24亿美元发展国产HBM

国产DRAM厂商长鑫存储母公司睿力集成计划投资24亿美元在上海建一座高端封装工厂。据报道&#xff0c;该工厂将专注于高带宽存储器&#xff08;HBM&#xff09;芯片的封装&#xff0c;预计到2026年中开始投入生产。长鑫存储将利用来自多方投资者的资金进行建设&#xff0c;其中包…

鼠尾草(洋苏草)

鼠尾草&#xff08;Salvia japonica Thunb.&#xff09;&#xff0c;又名洋苏草、普通鼠尾草、庭院鼠尾草&#xff0c;属于唇形科鼠尾草属多年生草本植物。鼠尾草以其独特的蓝紫色花序和长而细密的叶片为特点&#xff0c;常用于花坛、庭院和药用植物栽培。 鼠尾草的名字源自于…

江科大笔记—读写内部闪存FLASH读取芯片ID

读写内部闪存FLASH 右下角是OLED&#xff0c;然后左上角在PB1和PB11两个引脚&#xff0c;插上两个按键用于控制。下一个代码读取芯片ID&#xff0c;这个也是接上一个OLED&#xff0c;能显示测试数据就可以了。 STM32-STLINK Utility 本节的代码调试&#xff0c;使用辅助软件…

Langchain-实战篇-搭建本地问答机器人-01

项目背景 在这个快节奏的职场世界里&#xff0c;我们每个人都可能在某个时刻&#xff0c;化身为一头辛勤的牛或一匹奔腾的马&#xff0c;面对入职签合同时的迷茫&#xff0c;或是离职时的纠纷&#xff0c;心中难免会涌现出各种疑问。比如&#xff1a; "这份合同里的条款…

Python在Excel中设置数字格式和获取应用数字格式后的值

目录 安装Python Excel库 Python在Excel中设置数字格式 Python获取Excel中应用数字格式的单元格的显示值 总结 Excel 数字格式是用于控制单元格中数字显示方式的一组规则或代码。通过设置不同的数字格式&#xff0c;可以定义数字的显示方式&#xff0c;如小数位数、货币符号…

如何使用PHP和Selenium快速构建自己的网络爬虫系统

近年来&#xff0c;随着互联网的普及&#xff0c;网络爬虫逐渐成为了信息采集的主要手段之一&#xff0c;然而&#xff0c;常规的爬虫技术不稳定、难以维护&#xff0c;市面上的纯web网页爬虫也只能在静态页面上进行操作。而php结合selenium可达到动态爬虫的效果&#xff0c;具…

Java对应C++ STL的用法

sort&#xff1a; 1&#xff1a;java.util.Arrays中的静态方法Arrays.sort()方法&#xff0c;针对基本数据类型和引用对象类型的数组元素排序 2&#xff1a;java.util.Collections中的静态方法的Collections.sort()方法&#xff0c;针对集合框架中的动态数组&#xff0c;链表&…

iOS17系统适配

iOS17 新功能 文章目录 iOS17 新功能iOS17支持哪几款机型Xcode15新特性iOS17-开发适配指南 横屏待机 在iOS 17中&#xff0c;还带来了横屏待机功能&#xff0c;苹果将这个新功能命名为“Standby”模式&#xff0c;为 iPhone 带来了全新的玩法。iPhone启用之后&#xff0c;默认情…

1-Pandas是什么

Pandas是什么 Pandas 是一个开源的第三方 Python 库&#xff0c;从 Numpy 和 Matplotlib 的基础上构建而来&#xff0c;享有数据分析“三剑客之一”的盛名&#xff08;NumPy、Matplotlib、Pandas&#xff09;。Pandas 已经成为 Python 数据分析的必备高级工具&#xff0c;它的…

PyTorch Tensor进阶操作指南(二):深度学习中的关键技巧

本文主要讲tensor的裁剪、索引、降维和增维 Tensor与numpy互转、Tensor运算等&#xff0c;请看这篇文章 目录 9.1、首先看torch.squeeze()函数&#xff1a; 示例9.1&#xff1a;&#xff08;基本的使用&#xff09; 小技巧1&#xff1a;如何看维数 示例9.2&#xff1a;&a…

Header Location重定向机制解析与应用

Header Location重定向机制解析与应用 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将深入探讨HTTP中的Header Location重定向机制&#xff0c;以及在…

安全架构概述_1.信息安全面临的威胁

在当今以计算机、网络和软件为载体的数字化服务几乎成为人类赖以生存的手段。与之而来的计算机犯罪呈现指数上升趋势&#xff0c;因此&#xff0c;信息的可用性、完整性、机密性、可控性和不可抵赖性等安全保障显得尤为重要&#xff0c;而满足这些诉求&#xff0c;离不开好的安…

Vulnhub-AdmX

主机发现 靶机 &#xff1a; 192.168.145.131131 这台主机 存活 端口扫描 nmap -sV -O -p 1-65535 192.168.145.131 存在 80 端口 &#xff0c;这里连ssh 端口都没了 80 端口存在 Apache httpd 2.4.1 存在 Apache 默认页面 像这种页面 &#xff0c;没有什么具体的价值 扫描一…

嵌入式Linux系统编程 — 4.6 atoi、strtol等函数实现字符串与数字转换

目录 1 字符串转整形数据 1.1 函数功能 1.2 示例程序 2 字符串转浮点型数据 2.1 函数介绍 2.2 示例程序 3 数字转字符串 3.1 函数介绍 3.2 函数原型 在编程中&#xff0c;经常会需要将数字组成的字符串转换为相应的数字、或者将数字转换为字符串&#xff0c;在 C 函数…

连环计 | 第6集 | 百姓有倒悬之危,君臣有累卵之急 | 貂蝉 | 三国演义 | 逐鹿群雄

&#x1f64b;大家好&#xff01;我是毛毛张! &#x1f308;个人首页&#xff1a; 神马都会亿点点的毛毛张 &#x1f4cc;这篇博客分享的是《三国演义》文学剧本第Ⅰ部分《群雄逐鹿》的第6️⃣集《连环计》的经典语句和文学剧本全集台词 文章目录 1.经典语句2.文学剧本台词 …