免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 824 | 回复: 0
打印 上一主题 下一主题

单片机 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-22 08:51 |只看该作者 |倒序浏览

注:资料来源网络,两年前整理的笔记。

一、  KEIL uVision2 C51编译器所支持的数据类型:

数据类型

长 度

值 域

unsigned char

单字节

0255

signed char

单字节

-128+127

unsigned int

双字节

065535

signed int

双字节

-32768+32767

unsigned long

四字节

04294967295

signed long

四字节

-2147483648+2147483647

float

四字节

±1.175494E-38±3.402823E+38

*

13字节

对象的地址

bit

01

sfr

单字节

0255

sfr16

双字节

065535

sbit

01











 

 

 

4 float浮点型
float
浮点型在十进制中具有7位有效数字,是符合IEEE754标准的单精度浮点型数据,占用四个字节。 

5* 指针型
指针型本身就是一个变量,在这个变量中存放的指向另一个数据的地址。这个指针变量要占据一定的内存单元,对不同的处理器长度也不尽相同,在C51中它的长度一般为13个字节。指针变量也具有类型。

6 bit位标量
bit
位标量是C51编译器的一种扩充数据类型,利用它可定义一个位标量,但不能定义位指针,也不能定义位数组。它的值是一个二进制位,不是0就是1,类似一些高级语言中的Boolean类型中的TrueFalse

7 sfr特殊功能寄存器
sfr
也是一种扩充数据类型,点用一个内存单元,值域为0255。利用它可以访问51单片机内部的所有特殊功能寄存器。如用sfr P1 = 0x90这一句定P1P1端口在片内的寄存器,在后面的语句中我们用以用P1 = 255(对P1端口的所有引脚置高电平)之类的语句来操作特殊功能寄存器。

8sfr16 16位特殊功能寄存器
sfr16
占用两个内存单元,值域为065535sfr16sfr一样用于操作特殊功能寄存器,所不同的是它用于操作占两个字节的寄存器,好定时器T0T1

9 sbit可录址位
sbit
同位是C51中的一种扩充数据类型,利用它可以访问芯片内部的RAM中的可寻址位或特殊功能寄存器中的可寻址位。如先前我们定义了
sfr P1 = 0x90; //
P1端口的寄存器是可位寻址的,所以我们可以定义
sbit P1_1 = P1
1; //P1_1P1中的P1.1引脚
//
同样我们可以用P1.1的地址去写,sbit P1_1 = 0x91;
这样我们在以后的程序语句中就可以用P1_1来对P1.1引脚进行读写操作了。通常这些可以直接使用系统提供的预处理文件,里面已定义好各特殊功能寄存器的简单名字,直接引用可以省去一点时间,您也可以自己写自己的定义文件。

二、转义字符:

转义字符

含义

ASCII码(16/10进制)

\o

空字符(NULL)

00H/0

\n

换行符(LF)

0AH/10

\r

回车符(CR)

0DH/13

\t

水平制表符(HT)

09H/9

\b

退格符(BS)

08H/8

\f

换页符(FF)

0CH/12

\'

单引号

27H/39

\"

双引号

22H/34

\\

反斜杠

5CH/92








 

 

 

三、存储器类型:

存储器类型

说 明

data

直接访问内部数据存储器(128字节),访问速度最快

bdata

可位寻址内部数据存储器(16字节),允许位与字节混合访问

idata

间接访问内部数据存储器(256字节),允许访问全部内部地址

pdata

分页访问外部数据存储器(256字节),用MOVX @Ri指令访问

xdata

外部数据存储器(64KB),用MOVX @DPTR指令访问

code

程序存储器(64KB,MOVC @A+DPTR指令访问







 

 

 

 

四、程序注释:

函数开头的注释内容:函数名称、功能、说明 输入、返回、函数描述、流程处理、全局变量、调用样例等,复杂的函数需要加上变量用途说明。

  1. 注释
  2. /*********************************************************************
  3. *
  4. * 函 数 名: v_LcdInit
  5. * 功能描述: LCD初始化
  6. * 函数说明: 初始化命令:0x3c, 0x08, 0x01, 0x06, 0x10, 0x0c
  7. * 调用函数: v_Delaymsec(),v_LcdCmd()
  8. * 全局变量:
  9. * 输 入:
  10. * 返 回:
  11. * 设 计 者:zhao 日期:2001-12-09
  12. * 修 改 者:zhao 日期:2001-12-09
  13. * 版 本:
  14. ***********************************************************************/


五、命名:

命名必须具有一定的实际意义。

1、常量的命名:全部用大写。

2、变量的命名:
变量名加前缀,前缀反映变量的数据类型,用小写,反映变量意义的第一个字母大写,其他小写。
其中变量数据类型:
unsigned char
前缀 uc signed char 前缀 sc
unsigned int
前缀 ui signed int 前缀
si
unsigned long
前缀 ul signed long 前缀
sl
bit
前缀 b 指针 前缀
p

例:ucReceivData 接收数据

3
、结构体命名:

4
、函数的命名:
函数名首字大写,若包含有两个单词的每个单词首字母大写。
函数原型说明包括:引用外来函数及内部函数,外部引用必须在右侧注明函数来源: 模块名及文件名, 内部函数,只要注释其定义文件名;

六、编辑风格

1、缩进:缩进以 Tab 为单位,一个 Tab 为四个空格大小。预处理语句、全局数据、函数原型、标题、附加说明、函数说明、标号等均顶格书写。语句块的“{”“}”配对对齐,并与其前一行对齐;

2、空格:数据和函数在其类型,修饰名称之间适当空格并据情况对齐。关键字原则上空一格,如:
if ( ... )
等,运算符的空格规定如下:“->”“[”“]”“++”“--”“~”“!”“+”“-”(指正负号),“&”(取址或引用)、“*”(指使用指针时)等几个运算符两边不空格(其中单目运算符系指与操作数相连的一边),其它运算符(包括大多数二目运算符和三目运算符“?:”两边均空一格,“(”“)”运算符在其内侧空一格,在作函数定义时还可据情况多空或不空格来对齐,但在函数实现时可以不用。“,”运算符只在其后空一格,需对齐时也可不空或多空格,对语句行后加的注释应用适当空格与语句隔开并尽可能对齐。

3、对齐:原则上关系密切的行应对齐,对齐包括类型、修饰、名称、参数等各部分对齐。另每一行的长度不应超过屏幕太多,必要时适当换行,换行时尽可能在“,”处或运算符处,换行后最好以运算符打头,并且以下各行均以该语句首行缩进,但该语句仍以首行的缩进为准,即如其下一行为“{”应与首行对齐。

4、空行:程序文件结构各部分之间空两行,若不必要也可只空一行,各函数实现之间一般空两行

5
、修改:版本封存以后的修改一定要将老语句用/* */ 封闭,不能自行删除或修改,并要在文件及函数的修改记录中加以记录。

6、形参:在定义函数时,在函数名后面括号中直接进行形式参数说明,不再另行说明。

 

 

*********************************************************************************************

                                        分割线

*********************************************************************************************

七、流水灯系统硬件图:

 

 

八、串口和max232

1、max232电平转换芯片

2、串口实物图

 

3、串口通信硬件连接原理图:

3、串口通信:

  1. #include <AT89X51.H>
  2. #include <stdio.h>
  3. void main(void)
  4. {
  5.  SCON = 0x50; //串口方式1,允许接收
  6.  TMOD = 0x20; //定时器1定时方式2
  7.  TCON = 0x40; //设定时器1开始计数
  8.  TH1 = 0xE8; //11.0592MHz 1200波特率
  9.  TL1 = 0xE8;
  10.  TI = 1;
  11.  TR1 = 1; //启动定时器

  12.  while(1)
  13.   {
  14.    printf ("Hello World!\n"); //显示Hello World
  15.   }
  16. }

 

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP