单片机学习-C51(8)

2019-04-15 15:24

4. 单片机的C51编程技巧

4.1 C51与C 语言 1、Main() {

//通信初始化

SCON=0x40; // 串行口工作方式1 ,TI=0 ,RI=0

TMOD=0x20; //定时器1工作方式2,8位自动重装式,晶振频率 11.0592MHz PCON=0;

TH1=0xFD; //9600bps TL1=0xFD; TR1=1; TI=1;

printf(\通信 }

2、C51的数据类型

bit 0 1

char 8 -128~127 unsigned char 8 0~256

int 16 -32768~32767 unsigned 16 0~65535

long int 32 -231 ~(231-1) unsigned 32 0~(232 -1)

float 32 //在汇编中有24位 例:int a=721 BCD

int a=0721 8 int a=0xFF Hex

3、C51的函数

int j 全局变量 void fun( ) {

int i; }

4.2 C语言中常用的语句(也适合于C51)

①if (条件) { }

② if( )

else if( ) else

③switch(条件式)

{ case: 值1

break;

case: 值2 break; ??.. }

④while(条件)

{ 动作 先条件 后内容 } ⑤ do

{先内容 后条件

}while(条件)

⑥for(算式1;算式2;算式3) // (赋植;条件;增量)

{

}

例1: for(i=0;i<10;i++)

{

动作 }

例2:for( ; ; );//C语言认为合法

例3:i=0;

for(;i<10;i++)

{ }

4.3 指针与数组

char *a; char ab; a=&ab;

char 名[ ][ ][ ](三维)

void dalay(unsigned int count ) {

unsigned int I;

for(i=0;i

}

}

main( ) {

dalay(100); }

4.4 语言中按地址传递

void demo(char buf[10]) {

char i;

for(1=0;i<10;i++)

{

buf[i]=0; } }

main( ) {

char dat[10];

demo(dat);

}

4.5 前置处理器

#define 宏定义 C语言优先处理

#define 宏包含

# 条件编辑 #define 宏名 字符串

例:#define PI 3.1415926 #define CS P1.0 #HIBYTE(a) ((unsigned char ((a))>>8)) unsigned char b;

例:b=HIBYTE(0xFF18) 结果:b=0xFF18 宏定义可以定义函数

#define F(x) (x)*(x)+2x*(x)+1

4.6 C51的存储器类型 1、复习

FFFFHFFFFH外部FFH1000H0FFFH内部(EA=1)0000H 80H70H0FFFH外部(EA=0)0000H00H SFR特殊功能 寄存器外部RAM(I/O)64KB内部RAM0000H外部数据存储器内部数据存储器程序存储器(a) 51系列存储器配置

FFFFHFFFFH外部FFH2000H1FFFH内部(EA=1)0000H 外部RAM(I/O)64KB 内部RAM SFR特殊功能 寄存器80H70H1FFFH外部(EA=0)0000H00H0000H外部数据存储器 程序存储器(b)52系列存储器配置

FFHFFHF0HE0HD0HC8HB8H特殊功能寄存B0HA8H器 SFRA0H98H90H88H80H80H仅8032/8052有 SFR中可寻址位数据缓冲区30H2FH 位寻址区~四个工作寄存器20H1FHR73区(8字节)18HR017HR72区(8字节)10HR0R70FH1区(8字节)08HR007HR70区(8字节)R000H~~~每个区8个工作寄存器R0~R7内部数据存储器图4.1 存储体结构

2、code 说的变量在程序空间 data 内 0~7F

idata 内 @R0 ~R 0~FF 256 bdata 可位寻址 16bit

80H

pdata R0 R1间接寻址0~0xFF xdata 外64K全部空间 0~0xFFFF

例1:unsigned char code lable[ ]={1,2,3,?.,100}; unsigned char data i; unsigned char bdata status; sbit st_7 =status^7; sbit st_6=status^6; sbit st_0=status^0;

status=0; st_7=1; status=0x80; 3、sfr psw=0xDO; sfr P0=0x80;

sbit P0_1=P0^1;

unsigned char address _at_0x20; int i;

4、C51中指令的控制存储模式选择

small 0x00~0x7FH

compact int pdata i; large int cdata

4.7 中断函数在C51中实现

INT0 0 0x0003 Time/Counter0 1 0x000B

INT1 2 0x0013 Time/Counter1 3 0x001B Serial port 4 0x0023

Void 函数名(void)interrupt 中断号 缓存器库 例:void TIMER0(void) interrupt 1 using 2 {

} main( ) {

ETO=1; EA=1; }

4.8 几个编程实例

例1:串行接口发送程序 #include “AT89x51.h” main() {

int i;

SCON=0x52; // 串行口工作方式1 ,TI=1 ,RI=0


单片机学习-C51(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:安徽省A10联盟2018届高三开年考文综地理试题含解析

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: