单片机C语言应用程序设计针对目前最通用的单片机8051和最流行的程序设计语言——C语言,以KEII。公司8051单片机开发套件讲解单片机的C语言应用程序设计。该套件的编译器有支持经典8051及8051派生产品的版本,统称为Cx51。Windows集成开发环境μVision2把μVisionl用的模拟调试器dScope与集成环境无缝结合起来,使用更方便,支持的单片机品种更多。 本书的特点是取材于原文资料,总结实际教学和应用经验,实例较多,实用性强。本书中C语言是针对8051特有结构描述的,这样,即使无编程基础的人,也可通过本书学习单片机的c编程。单片机C语言应用程序设计目录第1章 单片机基础知识 1.1 8051单片机的特点 1.2 8051的内部知识 1.3 8051的系统扩展 习题一第2章 C与8051 2.1 8051的编程语言 2.2 Cx51编译器 2.3 KEIL 8051开发工具 2.4 KEIL Cx51编程实例 2.5 Cx51程序结构 习题二第3章 Cx51 数据与运算 3.1 数据与数据类型 3.2 常量与变量 3.3 Cx51数据存储类型与8051存储器结构 3.4 8051特殊功能寄存器(SFR)及其Cx51定义 3.5 8051并行接口及其Cx51定义 3.6 位变量(BIT)及其Cx51定义 3.7 Cx51运算符、表达式及其规则 习题三第4章 Cx51 流程控制语句 4.1 C语言程序的基本结构及其流程图 4.2 选择语句 4.3 循环语句 习题四第5章 Cx51 构造数据类型 5.1 数组 5.2 指针 5.3 结构 5.4 共用体 5.5 枚举 习题五第6章 Cx51 函数第7章 模块化程序设计第8章 8051内部资源的C编辑第9章 8051扩展资源的C编辑第10章 8051输出控制的C编程第11章 8051数据采集的C编程第12章 8051机间通信的C编程第13章 8051人机交互的C编程附录A μVision2集成开发环境使用附录B KEIL Cx51 上机制南
上传时间: 2013-10-21
上传用户:行者Xin
串行编程器源程序(Keil C语言)//FID=01:AT89C2051系列编程器//实现编程的读,写,擦等细节//AT89C2051的特殊处:给XTAL一个脉冲,地址计数加1;P1的引脚排列与AT89C51相反,需要用函数转换#include <e51pro.h> #define C2051_P3_7 P1_0#define C2051_P1 P0//注意引脚排列相反#define C2051_P3_0 P1_1#define C2051_P3_1 P1_2#define C2051_XTAL P1_4#define C2051_P3_2 P1_5#define C2051_P3_3 P1_6#define C2051_P3_4 P1_7#define C2051_P3_5 P3_5 void InitPro01()//编程前的准备工作{ SetVpp0V(); P0=0xff; P1=0xff; C2051_P3_5=1; C2051_XTAL=0; Delay_ms(20); nAddress=0x0000; SetVpp5V();} void ProOver01()//编程结束后的工作,设置合适的引脚电平{ SetVpp5V(); P0=0xff; P1=0xff; C2051_P3_5=1; C2051_XTAL=1;} BYTE GetData()//从P0口获得数据{ B_0=P0_7; B_1=P0_6; B_2=P0_5; B_3=P0_4; B_4=P0_3; B_5=P0_2; B_6=P0_1; B_7=P0_0; return B;} void SetData(BYTE DataByte)//转换并设置P0口的数据{ B=DataByte; P0_0=B_7; P0_1=B_6; P0_2=B_5; P0_3=B_4; P0_4=B_3; P0_5=B_2; P0_6=B_1; P0_7=B_0;} void ReadSign01()//读特征字{ InitPro01(); Delay_ms(1);//----------------------------------------------------------------------------- //根据器件的DataSheet,设置相应的编程控制信号 C2051_P3_3=0; C2051_P3_4=0; C2051_P3_5=0; C2051_P3_7=0; Delay_ms(20); ComBuf[2]=GetData(); C2051_XTAL=1; C2051_XTAL=0; Delay_us(20); ComBuf[3]=GetData(); ComBuf[4]=0xff;//----------------------------------------------------------------------------- ProOver01();} void Erase01()//擦除器件{ InitPro01();//----------------------------------------------------------------------------- //根据器件的DataSheet,设置相应的编程控制信号 C2051_P3_3=1; C2051_P3_4=0; C2051_P3_5=0; C2051_P3_7=0; Delay_ms(1); SetVpp12V(); Delay_ms(1); C2051_P3_2=0; Delay_ms(10); C2051_P3_2=1; Delay_ms(1);//----------------------------------------------------------------------------- ProOver01();} BOOL Write01(BYTE Data)//写器件{//----------------------------------------------------------------------------- //根据器件的DataSheet,设置相应的编程控制信号 //写一个单元 C2051_P3_3=0; C2051_P3_4=1; C2051_P3_5=1; C2051_P3_7=1; SetData(Data); SetVpp12V(); Delay_us(20); C2051_P3_2=0; Delay_us(20); C2051_P3_2=1; Delay_us(20); SetVpp5V(); Delay_us(20); C2051_P3_4=0; Delay_ms(2); nTimeOut=0; P0=0xff; nTimeOut=0; while(!GetData()==Data)//效验:循环读,直到读出与写入的数相同 { nTimeOut++; if(nTimeOut>1000)//超时了 { return 0; } } C2051_XTAL=1; C2051_XTAL=0;//一个脉冲指向下一个单元//----------------------------------------------------------------------------- return 1;} BYTE Read01()//读器件{ BYTE Data;//----------------------------------------------------------------------------- //根据器件的DataSheet,设置相应的编程控制信号 //读一个单元 C2051_P3_3=0; C2051_P3_4=0; C2051_P3_5=1; C2051_P3_7=1; Data=GetData(); C2051_XTAL=1; C2051_XTAL=0;//一个脉冲指向下一个单元//----------------------------------------------------------------------------- return Data;} void Lock01()//写锁定位{ InitPro01();//先设置成编程状态//----------------------------------------------------------------------------- //根据器件的DataSheet,设置相应的编程控制信号 if(ComBuf[2]>=1)//ComBuf[2]为锁定位 { C2051_P3_3=1; C2051_P3_4=1; C2051_P3_5=1; C2051_P3_7=1; Delay_us(20); SetVpp12V(); Delay_us(20); C2051_P3_2=0; Delay_us(20); C2051_P3_2=1; Delay_us(20); SetVpp5V(); } if(ComBuf[2]>=2) { C2051_P3_3=1; C2051_P3_4=1; C2051_P3_5=0; C2051_P3_7=0; Delay_us(20); SetVpp12V(); Delay_us(20); C2051_P3_2=0; Delay_us(20); C2051_P3_2=1; Delay_us(20); SetVpp5V(); }//----------------------------------------------------------------------------- ProOver01();} void PreparePro01()//设置pw中的函数指针,让主程序可以调用上面的函数{ pw.fpInitPro=InitPro01; pw.fpReadSign=ReadSign01; pw.fpErase=Erase01; pw.fpWrite=Write01; pw.fpRead=Read01; pw.fpLock=Lock01; pw.fpProOver=ProOver01;}
上传时间: 2013-11-12
上传用户:gut1234567
清华大学数据结构课上实现的B+树,设计一个4阶B+树,包括: (1) 叶子的每个记录应该包括4字节(long)关键码值和60字节的数据字段(存储文件名等,可以自定),设每个叶子可以存储5条记录,而内部节点应该是关键码值/指针对。此外,每个节点还应该有指向同层下一个节点的指针、本节点存储的关键码数等; (2) 此4阶B+树应该支持插入、删除以及根据给定关键码值进行精确检索与关键码范围检索; (3) 显示(打印)此4阶B+树的生长(含删除节点)过程实例;
上传时间: 2014-08-05
上传用户:ywqaxiwang
注塑机生产过程的微机控制系统设计本系统设计是通过8255A并行端口A、B传输数据控制12个LED发光二级管的亮灭来模拟控制两台注塑机的生产过程。其中端口A和B分别对应1号和2号注塑机,每一个LED代表一个工序。编程语言采用BORLAND C++语言。
上传时间: 2013-12-25
上传用户:叶山豪
B树的相关算法。源程序,C文件压缩。包括建立,插入等等相关的操作。
上传时间: 2013-11-26
上传用户:yepeng139
B/s结构,采用 asp.net(C#)+ MS SQL 编写。严格按照三层结构,不失为学习 C#的好例子。安泰OA办公系统自动化系统
标签:
上传时间: 2015-03-22
上传用户:yzy6007
java ejb开发 程序4、语句alter table people add(phone_number varchar2(10)) 的作用是 A 修改表结构 B 为people表添加约束,约束名称是phone_number C 向people表中添加一列,名称是phone_number,数据类型是varchar2,长度是10 D 上述答案均不正确 5、( )BLOB和CLOB的区别在于 A CLOB只能存放字符类型的数据,而BLOB没有任何限制 B BLOB只能存放字符类型的数据,而CLOB没有任何限制 C CLOB只能存放小于4000字节的数据,而BLOB可以存放大于4000字节的数据 D BLOB只能存放小于4000字节的数据,而CLOB可以存放大于4000字节的数据 6、存储过程从本质上来讲就是 A 匿名的PL/SQL程序块,它可以被赋予参数 B 命名的PL/SQL程序块,它可以被赋予参数 C 命名的PL/SQL程序块,不能被赋予参数 D 匿名的PL/SQL程序块,不能被赋予参数 7、( )下列关于日期数据类型,哪一个语句是正确的写法 A insert into test values( 9999-12-03 ) B insert into test values( 1999-03-02 ) C insert into test values(to_char(1999-06-03, yyyy/dd/mm )) D insert into test
标签: people phone_number varchar2 alter
上传时间: 2013-12-26
上传用户:wendy15
计算矩阵连乘积 问题描述 在科学计算中经常要计算矩阵的乘积。矩阵A和B可乘的条件是矩阵A的列数等于矩阵B的行数。若A是一个p×q的矩阵,B是一个q×r的矩阵,则其乘积C=AB是一个p×r的矩阵。
上传时间: 2015-03-25
上传用户:yulg
a.本系统是学校教材科内部的一个教材订购系统,实现教材的销售和采购。 b.本项目有学校教材科提出,由老师委托我小组开发,开发人员包括: 组长兼系统分析员:AAA、系统设计员:BBB、程序设计员:CCC、数据库管理员:DDD、数据操作员:EEE.统最终用户为教材科,由教材科提供计算网络。 c.该系统还和学校财务科进行资金数据来往,.由本系统向财务处提供销售情况,实行教材的安全发放和采购.并顺便和各书店联营向个别人员单独售书。
上传时间: 2015-04-25
上传用户:baitouyu
Delphi2005 BS程序设计技巧集 (1-3) 现在delphi 2005 B/S的书籍资料太少,几乎没有可参考的资料,这在一定程度上限制了delphi 2005的使用,相反C#,ASP的书籍资料到处都是。通过几个月的学习也算是总结了一点经验,从现在起我将陆续将ASP和C#的例子、技巧翻译到delphi 2005下面,希望对大家的学习和工作有帮助,毕竟.Net是一种发展趋势。我将不定期写新的内容,同时,如果你在工作或学习中有什么问题,我也会将问题加入本篇文章,另外,一个人的能力毕竟有限,也希望大家共同来解决问题。 宋雨炫
上传时间: 2013-11-25
上传用户:lgnf