keil C 编程 阅读笔记

Keil C 编程

  1. 对端口P0-7的读操作,需要先置1,然后再读。置1的状态是复位上电的默认状态(高电平); P1=0xFF;
  2. 关键字sfr是将地址赋给寄存器名,一般将寄存器大写命名;sfr T3MOD=0xC0; 指寄存器T3MOD的地址是0xC0;Sfr是volatile的,必须在函数外面申明;

Sfr是字节(8位)操作;sfr16是字(16位)操作;

3. Keil C的存储结构是高字节在低地址,而sfr16定义的字操作,是将单片机的高地址认为是高字节,低地址认为是低字节,跟Keil C是相反的;

4. sbit指令可以将端口的位映射为位变量,以方便位读写,其中^后的数字表示字节中的第几位;sbit P13 = P1^3;  sbit类型的变量也必须在函数外面申明;

5. 外部存储指定地址的读写操作,用XBYTE,XBYTE指令相当于MOVX指令;absacc.h里面提供了用法;

6. 中断关键字,通过interrupt和using来实现。Interrupt决定中断矢量入口,using决定使用哪些寄存器。C51寄存器组0-3,每个寄存器组分别有R0-R7组成。

中断矢量入口根据datasheet上中断请求源表格,从0开始数,空行也算数。

比如:

void Uart(void)  interrupt 4

void Uart3Isr() interrupt 17 using 1

7. _at_关键字:指定变量定义到指定空间;xdata  变量名  _at_  地址;

8. 鲁棒性:所谓“鲁棒性”,是指控制系统在一定(结构,大小)的参数摄动下,维持其它某些性能的特性。 鲁棒是Robust的音译,也就是健壮和强壮的意思;

9. 存储空间分配:

空间

指令

数据类型

寻址方式

片内内存

MOX

data

DATA

直接寻址

idata

IDATA

间接寻址MOV @R0, #VAL

片外内存

MOVX

pPdata

PDATA页寻址空间

MOVX  @Ri

xdata

XDATA

MOVX  @DPTR

程序空间

MOVC

code

MOVC @A+DPTR

10.

CPU指令系统:

直接寻址:

MOV  A  #3AH   --->表示把3AH这个立即数放到累加器A里面

MOV  A  3AH   ---->表示将3AH这个地址里面的内容放到累加器A里面

间接寻址:

ANL   A  @R0   ---->R0寄存器,将R0寄存器的内容假设是60H作为地址,将60H地址的内容和累加器A里面的内容进行逻辑与,结果放到累加A里面

寄存器寻址:

ANL   A   R0   ------>将R0寄存器里面的内容和累加器A进行逻辑与,结果放到累加器A里面;

INC  R0       --->将R0寄存器的内容加1,结果放在R0里面;

相对寻址模式:

11.

char (*p)[2];    这个指针是指向数组的指针。数组的长度是2。

char *p[2];     这个是指针数组,有两个指针。

12.

char (*f)()   这个是函数的指针,函数名可以直接当做函数的指针f。

char *f()    这个是指针的函数,返回值为指针的函数。

13.

Printf、scanf 参量允许的总字节数由C51库限制,8051存储结构有限:

SMALL和COMPACT模式下,最多传递15个字节;

LARGE模式下,最多传递40个字节;

14.

typedef定义规则:从左往右看,找到第一个没有定义的字符串,用这个字符串代替除了typedef和本身后的字符串。

typedef  int  inta[10];

从左往右看,第一个没有定义的字符串为inta, 代替除了typedef和inta后的字符串即int[10]

也就是,inta出现的地方,即指代int[10]

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值