单片机的字节寻址c语言,单片机C语言通用万能编程模板-程序员宅基地

技术标签: 单片机的字节寻址c语言  

《单片机C语言通用万能编程模板》由会员分享,可在线阅读,更多相关《单片机C语言通用万能编程模板(30页珍藏版)》请在人人文库网上搜索。

1、8051单片机C语言编程模板 1.函数头文件22.毫秒级CPU延时函数43.定时/计数器初始化函数54.定时/计数器1中断处理函数65.定时/计数器0中断处理函数76.PWM初始化函数87.PWM0占空比设置函数98.UART串口初始化函数109.UART串口接收中断处理函数1110.UART串口发送函数1211.UART串口发送字符串函数1312.外部中断INT初始化函数1413.外部中断INT1中断处理程序1514.外部中断INT0中断处理程序1515.普通I/O口模拟PWM生成程序1616.LCD驱动1617.DS18B20温度传感器驱动1918.LCM2402(1602也适用)驱动程序。

2、2119.主函数2520. 8个独立式键盘驱动程序2721. 16个阵列式键盘驱动程序281.函数头文件/*程序名: 编写人: 编写时间:20 年 月 日硬件支持:接口说明:修改日志:NO.1-/*说明:/*/#include /通用89C51头文件(只留下实际使用的单片机所对应的头文件)#include /设定插入点#include /字符处理#include /定义错误码#include /浮点数处理#include /文件输入输出#include /参数化输入输出#include /数据流输入输出#include /定义各种数据类型最值常量#include /定义本地化函数#includ。

3、e /定义数学函数#include /定义输入输出函数#include /定义杂项函数及内存分配函数#include /字符串处理#include /基于数组的输入输出#include /定义关于时间的函数#include /宽字符处理及输入输出#include /宽字符分类#include /51基本运算(包括_nop_空函数)sfr 自定义名 = SFR地址 ; /按字节定义SFR中的存储器名。例:sfr P1 = 0x90;sbit 自定义名 = 系统位名 ; /按位定义SFR中的存储器名。例:sbit Add_Key = P3 1;bit 自定义名 ; /定义一个位(位的值只能是0或1。

4、)例:bit LED;#define 代替名 原名 /用代替名代替原名。例:#define LED P1 / #define TA 0x25#define KEY P1 /键盘所连接的I/O接口组定义sbit SPEAKER = P37; /扬声器连接定义sbit DQ = P2 5; /ds18B20sbit RS = P10; /模式位,为0输入指令,为1输入数据sbit RW = P11; /读写位,为0读,为1写sbit E = P12; /使能位#define Lcd_Bus P0 /数据总线unsigned char 自定义名 ; /定义一个0255的整数变量。unsigned i。

5、nt 自定义名 ; /定义一个065535的整数变量。data 字节寻址片内RAM,片内RAM的128字节 (例:data unsigned char a;)bdata可位寻址片内RAM,16字节,从0x20到0x2F (例:bdata unsigned char a;)idata 所有片内RAM,256字节,从0x00到0xFF (例:idata unsigned char a;)pdata片外RAM,256字节,从0x00到0xFF (例:pdata unsigned char a;)xdata片外RAM,64K字节,从0x00到0xFFFF (例:xdata unsigned char 。

6、a;)code ROM存储器,64K字节,从0x00到0xFFFF (例:code unsigned char a;)2.毫秒级CPU延时函数/*函数名:毫秒级CPU延时函数调 用:DELAY_MS (?);参 数:165535(参数不可为0)返回值:无结 果:占用CPU方式延时与参数数值相同的毫秒时间备 注:应用于1T单片机时i头文件支持。/*/void UART_TC (unsigned char *str)while(*str != 0)UART_T(*str);*str+;*str = 0;/*/中断入口说明中断入口说明interrupt 0 外部中断0(ROM入口地址:0x03)in。

7、terrupt 1 定时/计数器中断0(ROM入口地址:0x0B)interrupt 2 外部中断1(ROM入口地址:0x13)interrupt 3 定时/计数器中断1(ROM入口地址:0x1B)interrupt 4 UART串口中断(ROM入口地址:0x23)(更多的中断依单片机型号而定,ROM中断入口均相差8个字节)using 0 使用寄存器组0using 1 使用寄存器组1using 2 使用寄存器组2using 3 使用寄存器组312.外部中断INT初始化函数/*函数名:外部中断INT初始化函数调 用:INT_init();参 数:无返回值:无结 果:启动外部中断INT1、INT0。

8、中断,设置中断方式备 注:/*/void INT_init (void)EA = 1; /中断总开关EX1 = 1; /允许外部中断1中断 EX0 = 1; /允许外部中断0中断IT1 = 1; /1:下沿触发 0:低电平触发IT0 = 1; /1:下沿触发 0:低电平触发/*/13.外部中断INT1中断处理程序/*函数名:外部中断INT1中断处理程序调 用:外部引脚INT1中断处理参 数:无返回值:无结 果:用户处理外部中断信号备 注:/*/void INT_1 (void) interrupt 2 using 2 /切换寄存器组到2 /用户函数内容/*/14.外部中断INT0中断处理程序/。

9、*函数名:外部中断INT0中断处理程序调 用:外部引脚INT0中断处理参 数:无返回值:无结 果:用户处理外部中断信号备 注:/*/void INT_0 (void) interrupt 0 using 2 /切换寄存器组到2 /用户函数内容/*/15.普通I/O口模拟PWM生成程序/*函数名:普通I/O口模拟PWM生成程序调 用:display (?)备 注:/*/void display (unsigned int a) /显示程序(50ms的PWM宽度) DY_PORT = 0x00; /LED小灯亮delay (a); /延时a的长度DY_PORT = 0xff; /LED小灯灭del。

10、ay (DY_PWM-a); /延时总PWM长度减a/*/16.LCD驱动/*/LCD驱动(DY12864CBL液晶显示屏并口驱动程序)/*/void chk_busy() /检查忙位(底层)RS=0;RW=1;E=1;Lcd_Bus=0xff;while(Lcd_Bus&0x80)=0x80);E=0;/*/void write_com(unsigned char cmdcode) /写命令到LCD(底层)chk_busy();RS=0;RW=0;E=1;Lcd_Bus=cmdcode;E=0;/*/void write_data(unsigned char Dispdata) /写数据到L。

11、CD(底层) chk_busy();RS=1;RW=0;E=1;Lcd_Bus=Dispdata;E=0;/*/void lcm_init() /初始化LCD屏(被调用层) write_com(0x30); /选择8bit数据流write_com(0x0c); /开显示(无游标、不反白)write_com(0x01); /清除显示,并且设定地址指针为00H/*/void lcm_w_word(unsigned char *s) /向LCM发送一个字符串,长度64字符之内。(被调用层)while(*s0) /应用:lcm_w_word(您好!);write_data(*s); s+;/*/voi。

12、d lcm_w_test(bit i,unsigned char word) /写指令或数据(被调用层)if(i = 0)write_com(word); /写指令或数据(0,指令)elsewrite_data(word); /写指令或数据(1,数据)/*/void lcm_clr(void) /清屏函数lcm_w_test(0,0x01);/*/17.DS18B20温度传感器驱动/*/DS18B20温度传感器驱动(显示0至60度)/*/void Delay(int num) /延时函数while(num-) ;/*/void Init_DS18B20(void) /初始化ds1820unsi。

13、gned char x=0;DQ = 1; /DQ复位Delay(8); /稍做延时DQ = 0; /单片机将DQ拉低Delay(80); /精确延时 大于 480usDQ = 1; /拉高总线Delay(14);x=DQ; /稍做延时后 如果x=0则初始化成功 x=1则初始化失败Delay(20);/*/unsigned char ReadOneChar(void) /读一个字节unsigned char i=0;unsigned char dat = 0;for (i=8;i0;i-)DQ = 0; / 给脉冲信号dat=1;DQ = 1; / 给脉冲信号if(DQ)dat|=0x80;Delay(4);return(dat);/*/void WriteOneChar(unsigned char dat) /写一个字节unsigned char i=0;for (i=8; i0; i-)DQ = 0;DQ = dat&0x01;Delay(5);DQ = 1;dat=1;。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_33959449/article/details/117054171

智能推荐

c语言实现文件移动\复制\重命名\删除等函数_c语言 copy 文件 api movefile-程序员宅基地

文章浏览阅读7.6k次。1.复制文件,定义与调用用例BOOL WINAPI CopyFile( __in LPCTSTR lpExistingFileName, __in LPCTSTR lpNewFileName, __in BOOL bFailIfExists);//CopyFile(srcfilepath, dstfilepath, 0_c语言 copy 文件 api movefile

SAP-ABAP-小计收起/折叠明细项目-只显示小计内容_sap小计折叠-程序员宅基地

文章浏览阅读1.5k次。单个小计收起明细:报表数据->合计->按照维度小计->点击小计维度字段(折叠所选内容) 或者 点击合计字段 左侧小点。 所有小计收起明细:报表数据->合计->按照维度小计->小计->下钻总计级别->选择对应级别->回车 ..._sap小计折叠

IIS7应用程序池停止后,如何自动启动_iis 应用程序自动启动-程序员宅基地

文章浏览阅读1.6k次。我的环境:win2008R2 64位+IIS7.0从windows事件里找到错误原因:应用程序池“abc”将被自动禁用,原因是为此应用程序池提供服务的进程中出现一系列错误。这个应用程序池停止后,它就无法自动启动了,导致网站出现503错误网上搜索千篇一律的解决办法是:给IIS Admin Service添加NetWork Service用户权限(本地启动、本地激活)这种说法并不完..._iis 应用程序自动启动

Linux java jvm 启动默认内存最大值-Xmx调整为物理内存的80%脚本_eden space 1048576k, 100% used-程序员宅基地

文章浏览阅读6.2k次。java -XX:+HeapDumpOnOutOfMemoryError -XX:+PrintGC -XX:+PrintGCDetails -XX:+PrintHeapAtGC -XX:+PrintGCTimeStamps -XX:-PrintCommandLineFlags -Xmx`free -m | grep Mem\: | awk '{print $2}' | xargs -i expr..._eden space 1048576k, 100% used

maven学习资源_maven推荐学习资源-程序员宅基地

文章浏览阅读222次。易百网http://www.yiibai.com/maven/---------------------------------------------------------【笔记】远程仓库在 pom.xml 文件这样: java.net https://maven.java.net/content/repositories/publ_maven推荐学习资源

机器学习大部分是用Python去实现,是否可以用Matlab去做机器学习呢?_机器学习只能用在python吗-程序员宅基地

文章浏览阅读1.7k次,点赞3次,收藏6次。而matlab刚开始主要是为了数学计算开发的一门商用软件,但是随着他的功能的更新,matlab的功能不紧止步于数学计算中,开发了更多的功能,在计算、工程等领域有着强大的功能,深受研究者的热爱,但可惜它是商用的,不开源!在做机器学习的过程中,很大一部分人都是选择python来做,原因在于python的编程也简单,同时python提供了比较多的封装好的机器学习包,导入就可以直接用,方便实用。总之,matlab在做机器学习上的优势是有的,就是其是商用的,不开源的,进而更多的人选择python来做。..._机器学习只能用在python吗

随便推点

MSB8003: 未定义 WindowsSDKDir 属性_msb800未定义windows sdkir属性-程序员宅基地

文章浏览阅读5.7k次。warning MSB8003: 未定义 WindowsSDKDir 属性。可能找不到某些生成工具。可能找不到某些生成工具。VS三大版本的对比分析VS运行出错用Visual Studio Installer 修复一遍就行了安装问题,修复一下,,社区版的应该没什么大问题。Visual Studio Community毕竟嘛,社区版,也可以理解为个人版。适用于学生、开源和个人等等。一些新手用来学习是个不错的选择。该版本有相对完备的免费IDE。可用于开发 Android、iOS、Windows 和_msb800未定义windows sdkir属性

50M/s, Onedrive直链提取-IDM实现满速下载-程序员宅基地

文章浏览阅读4.8w次,点赞9次,收藏30次。50M/s, Onedrive直链提取+IDM实现满速下载博客内容遵循 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 协议本文永久链接是:https://blog.nxingcloud.co/posts/a3ad802e.htmlOneDrive虽然嫖到了5T但是速度慢到极致是不是很不甘心,心里发痒?别急!OneDrive的真正实力远超你想象!今天,我就来教大家如何用oneindex+IDM让你的OneDrive下载速度爆表。话不多说,正文开整!!!国内网盘现状_onedrive直链

【ROS-数据格式理解】PointCloud2格式理解fields-程序员宅基地

文章浏览阅读1.4w次,点赞10次,收藏38次。【ROS-数据格式理解】PointCloud2格式理解 1、PointCloud2消息格式2、PointCloud2 消息格式例子3、理解其中的fields1、PointCloud2消息格式具体官方数据http://docs.ros.org/en/jade/api/sensor_msgs/html/msg/PointCloud2.html在ros中查看如下:std_msgs/Header header uint32 seq time stamp string frame_iduint3_pointcloud2

php 文章浏览数_重复计数,php+mysql文章浏览次数统计及发布时间-程序员宅基地

文章浏览阅读85次。session_start();$stsfile = "10001.php";$nowtime = time();date_default_timezone_set("Asia/Chongqing");//设置时间标准If (!isset($_SESSION['article']) || $_SESSION['article'] != $stsfile ) //判断用户是否在线{$link = m..._php+myqsl文章阅读量代码

图像噪声与去噪-程序员宅基地

文章浏览阅读3.4w次,点赞17次,收藏139次。图像的空域噪声以及二维降噪算法介绍1图像噪声的成因  图像在生成和传输过程中常常因受到各种噪声的干扰和影响而是图像降质,这对后续图像的处理和图像视觉效应将产生不利影响。噪声种类很多,比如:电噪声,机械噪声,信道噪声和其他噪声。因此,为了抑制噪声,改善图像质量,便于更高层次的处理,必须对图像进行去噪预处理。2图像噪声的特征  图像噪声使得图像模糊,甚至淹没图像特征_图像噪声与去噪

Python Web 之Flask基础(一)_python flask修改了视图函数的函数名-程序员宅基地

文章浏览阅读536次,点赞4次,收藏4次。文章目录Flask 框架基础Flask 搭建创建虚拟环境安装 Flask测试Flask 的基本使用路由视图函数请求与响应请求响应Flask 框架基础Flask 搭建Flask 1.0 文档依赖当安装 Flask 时,以下配套软件会被自动安装。Werkzeug 用于实现 WSGI ,应用和服务之间的标准 Python 接口。Jinja 用于渲染页面的模板语言。MarkupSaf..._python flask修改了视图函数的函数名

推荐文章

热门文章

相关标签