例5.1:用C51控制并口输出,使并口P0的第0位引脚交替0和1变化#include<reg5l.h)/包含特殊功能寄存器声明头文件sbitP10=Po0特殊功能位声明1/延时函数delay()funsignedinti=o:声明变量i为无符号整形数,初值赋为0while(i<10000)i++:以为循环计数器进行循环//主程序main()while(1)P10=0;//置P1.0=0delay();调用延时函数P10-1;置P1.0=1delay();调用延时函数
例5.1:用C51控制并口输出,使并口P0的第0位引脚交替0和1变化。 #include <reg51.h> // 包含特殊功能寄存器声明头文件 sbit P10=P0^0 // 特殊功能位声明 delay( ) // 延时函数 { unsigned int i=0; // 声明变量i为无符号整形数,初值赋为0 while( i<10000 ) i++; // 以i为循环计数器进行循环 } main( ) // 主程序 { while(1) { P10=0; // 置P1.0=0 delay( ); // 调用延时函数 P10=1; // 置P1.0=1 delay( ) ; // 调用延时函数 } }
2.C51中变量的存储类型每一人类型的格式及所在的存储器区如下:C51共有6个存储类型,①data存储类型为什么要使定义在片内RAM的OOH~7FH区用存储类型?处理速度最快的内存空间;bdata存储类型定义在片内RAM的20H~2FH区,即片内RAM的位寻址区,共有16字节128个位,该区可按字节(字节单元的地址是20H~2FH)进行寻址,也可按位(位地址是0OH7FH)进行寻址:idata存储类型3可以进行间接寻址,定义在整个片内RAM区(对80C51而言是00H~FFH的空间):
C51共有6个存储类型,每个类型的格式及所在的存储器区如下: ① data存储类型 定义在片内RAM的00H~7FH区,该区是单片机处理速度最快的内存空 间; ② bdata存储类型 定义在片内RAM的20H~2FH区,即片内RAM的位寻址区,共有16字节 128个位,该区可按字节(字节单元的地址是20H~2FH)进行寻址,也 可按位(位地址是00H~7FH)进行寻址; ③ idata存储类型 可以进行间接寻址,定义在整个片内RAM区(对80C51而言是00H~ FFH的空间); 2.C51中变量的存储类型 为什么要使 用存储类型?
xdata存储类型定义在片外RAM区(最大64K,地址从O00OH~FFFFH):?pdata存储类型也是定义在整个片外RAM区,它按页(256字节/页)寻址,最大256页,按此存储类型定义的变量要比按xdata存储类型定义的变量处理速度快;code存储类型定义ROM区(最大64K,地址从O000OHFFFFH),该区域的变量只能读取不能改写。由此也可以看出,单片机的存储器采用哈佛结构
④ xdata存储类型 定义在片外RAM区(最大64K,地址从0000H~FFFFH); ⑤ pdata存储类型 也是定义在整个片外RAM区,它按页(256字节/页)寻址,最大 256页,按此存储类型定义的变量要比按xdata存储类型定义的变量 处理速度快; ⑥ code存储类型 定义ROM区(最大64K,地址从0000H~FFFFH),该区域的变量只 能读取不能改写。 由此也可以看出,单片机的存储器采用哈佛结构
pdataC51中变量的存储类型OOOOHOOOOHOOHOOOOH工作pdata片内片外256B寄存器ROMROM4个组1FH20HEA=1EA=0eiRpe位寻OFFFHOFFFH和ae址区30Haeeiepx片外用户RAM1000HRAM-片外7FHROM80HFFFFHSFR25616FFFFHFFHcodepdata图5.1典型MCS-51系列单片机的内存组织示意图
C51中变量的存储类型 图5.1 典型MCS-51系列单片机的内存组织示意图 工作 寄存器 4个组 位寻 址区 用户 RAM SFR 00H 1FH 20H 2FH 30H 7FH 80H FFH pdata 256B pdata 256B 片外 RAM 0000H FFFFH bdata data idata xdata 片内 ROM EA=1 0000H 0FFFH 片外 ROM EA=0 0000H 0FFFH 片外 ROM 1000H FFFFH code pdata pdata
声明变量存储类型的格式//在片内RAM区定义整型变量aD int data a;unsignedchardatavector://在片内RAM区定义一个无符号字符型变量//在片内RAM位寻址区定义一个位bit bdata flags;S变量flags①unsignedcharxdata sum=o;//声明无符号字符型变量sum的存储类型为xdata,且赋初值为o,存放在片外数据存储区
声明变量存储类型的格式 ① int data a; //在片内RAM区定义整型变量a ② unsigned char data vector; //在片内RAM区定义一个无符号字 符型变量 ③ bit bdata flags; //在片内RAM位寻址区定义一个位 变量flags ④unsigned char xdata sum=0; //声明无符号字符型变量sum的存 储类型为xdata,且赋初值为0, 存放在片外数据存储区