首页 51单片机常用芯片资料C51精简版教程 原版

51单片机常用芯片资料C51精简版教程 原版

举报
开通vip

51单片机常用芯片资料C51精简版教程 原版 第一课 AT89S52的引脚功能介绍 P0:漏极开路的双向IO口,使用时需外回上拉电阻 外部地址数据总线 可带八个TTL负载 i=P0; 1111 1111 P1:准双向口(当作输入口用时,须将IO口置1(P1=0XFF;i=P1;)),可带四个TTL负载 P1.0:T2定时计数器2的外部脉冲输入及时钟输出 P1.1:T2EX定时计数器2的捕捉、自动重装的触发输入及减法计数控制 P1.5:MOSI,主动输出从...

51单片机常用芯片资料C51精简版教程 原版
第一课 AT89S52的引脚功能介绍 P0:漏极开路的双向IO口,使用时需外回上拉电阻 外部地址数据总线 可带八个TTL负载 i=P0; 1111 1111 P1:准双向口(当作输入口用时,须将IO口置1(P1=0XFF;i=P1;)),可带四个TTL负载 P1.0:T2定时计数器2的外部脉冲输入及时钟输出 P1.1:T2EX定时计数器2的捕捉、自动重装的触发输入及减法计数控制 P1.5:MOSI,主动输出从动输入引脚,用于flash编程 P1.6:MISO, 主动输入从动输出引脚,用于flash编程 P1.7:SCK, 同步时钟,用于flash编程 ISP编程时用 P2:准双向口,可带四个TTL负载 P2=0xff; i=P2; 外部地址总线高八位 P3:准双向口,可带四个TTL负载 P3.0:RXD,串行输入 P3.1:TXD,串行输出 P3.2:INT0,外部中断0输入 P3.3:INT1,外部中断1输入 P3.4:T0,定时计数器0的外部脉冲输入 P3.5:T1,定时计数器1的外部脉冲输入 P3.6:/WR,外部数据存储器的写选能信号 P3.7:/RD,外部数据存储器的读选能信号 RST:复位端,高电平有效 ALE/PROG(_):外部低八位地址总线锁存信号/编程脉冲输入 PSEN(_):外部程序存储器的读选通信号 EA/Vpp:外部程序存储器的选通信号/编程电压输入 EA=0,使用外部程序存储器 EA=1,先使用内部程序存储器,后使用外部程序存储器 XTAL1、XTAL2:时钟引脚,晶振引脚,0hz--33Mhz,作工控产品不超过6MHZ, 4MHZ 6MHZ 8MHZ 12MHZ 11.0592MHZ ISP下载线相关针脚: 6 7 8 9 40 20 MOSI MISO SCK RST VCC GND 第二课 51的存储器结构(89s52为例) 一、程序存储器(ROM) code (0x0000-0xffff) 1、类型:FLASH(闪存) code(const) 区 2、作用:存放程序代码 3、容量:8KB=8*1024字节=8192=2^13 8 wei 4、地址编码:16位二进制编码 0000 0000 0000 0000 0000H 0 0x0000 0000 0000 0000 0001 0001H 0000 0000 0000 0010 0000 1111 1111 1111 0FFFH 4095 s51 0001 1111 1111 1111 1FFFH 8191 s52 1111 1111 1111 1111 0FFFFH 64K 89E516 0xffff 2^16=2^6*2^10=2^6K=64K 5、功能分区:0000H-0002H,启动单元,复位中断入口 (中断矢量) 0003H 外部中断0入口 0 000BH 定时中断0入口 1 0013H 外部中断1入口 2 001BH 定时中断1入口 3 0023H 串行中断入口 4 002bh 定时中断2入口 5 0100H 主程序区(预留32个中断入口) ORG 0000H LJMP MAIN ;转向主程序 ORG 0003H LJMP ZD0 ;转向中断0程序 ORG 0023H LJMP CS ;转向串行中断程序 ORG 0033H ;ORG 定义程序存放的首地址 MAIN: ;主程序 zd0: cs: 二、数据存储器(RAM) (文件寄存器) 1、类型:静态数据存储器 2、作用:存放临时数据 idata 3、容量:256字节=2^8 000-0ffh 4、地址编码:八位二制表示 0 0000 0000 00h MOV R0,#0ffh 127 0111 1111 7fh S51 MOV A,@R0 MOV A,0FFH 255 1111 1111 ffh S52 mov 30H,#05H mov 7fh,#01h 5、功能分区: 1)00h-1fh,工作寄存器区(32) 00H R0 08H R0 10H R0 18H R0 01H R1 09H R1 11H R1 07H R7 0FH R7 17H R7 1FH R7 RS1=0 RS1=0 RS1=1 RS1=1 RS0=0 RS0=1 RS0=0 RS0=1 CLR RS1 CLR RS1 CLR RS0 SETB RS0 选择当前寄存器组 using 0 选择当前寄存器组0 2)20H-2FH,位寻址区 bdata 16*8位=128(位地址:00H-7FH) MOV 20H,#91H CLR 20H.0 20H.7 20H.6 20H.5 20H.4 20H.3 20H.2 20H.1 20H.0 =1001 0001 07h 00h 21H.7 21H.6 21H.5 21H.4 21H.3 21H.2 21H.1 21H.0 0fh 08h 22H.7 22H.6 22H.0 10H 2FH.7 7FH 3)30H-7FH,用户RAM区,缓冲区或是堆栈区(RAM 07h) 4)80-ffh,高128单元,只能间接寻址 6、51变量的存贮类型与其数据存储器的关系 内部RAM 00h-7fh data unsigned char i; 内部RAM 20h-2fh bdata 内部RAM 00h-ffh idata 外部RAM 00H-ffh pdata MOVX A,@R0 外部RAM 0000H-ffffh xdata MOVX A,@DPTR 三、51特殊功能寄存器(SFR) P0(80H) P1(90H) P2(A0H) P3(B0H) ACC(E0H) B(F0) PSW(D0H) SP(81H) DPL(82H) DPH(83H) IE(A8H) IP(B8H) TCON(88H) TMOD(89H) TL0(8AH) TL1(8BH) TH0(8CH) TH1(8DH) SCON(98H) SBUF(99H) PCON(87H) 在SFR中,地址以0或是8结尾的,可以位寻址,其位地址从字节地址开始 P0 P0.7 P0.6 P0.5 P0.4 P0.4 P0.2 P0.1 P0.0 87H 81H 80H ACC:累加器 作用:运算 数据传送 数据转换 ADD ACC,#10 ACC=246+10 11110110 MOV P1,A 10001000 01111110 MOVC A,@A+DPTR B: B寄存器 作用:乘除法运算 a=i*j; MUL AB DIV AB a=i/10 sp: 堆栈指针 作用:存放栈顶,保护临时数据, dptr:(dph+dpl)数据指针 作用:数据传送 数据转换 PSW:程序状态字 7 0 11110100 CY AC F0 RS1 RS0 OV - P 00001010 CY:进位标志位 00000000 AC:辅助进位标志位, 加法运算时,低四位向高四位有进位为1 F0:用户标志位 RS1 RS0 :当前寄存器组选择位 OV:溢出标志位 OV=CY^C67=1^0=1 P:寄偶校验位 (偶校验,由ACC中1的个数决定的,若为寄数个1,则P=1,反之为0) PC:程序指针(0000H) 作用:存放即将执行指令的首地址(ROM) 四、51的时序 振荡频率:Fosc 振荡(时钟)周期:T=1S/Fosc 机器周期:Tfr=12*1s/Fosc (Fosc晶振的频率) Tfr=12*1s/(12*1000000)=1s/1000000=1us Fosc=4m Tfr=Tcyc 指令周期:LJMP MAIN 2Tfr nop 1Tfr MUL AB 4Tfr 4us 五、51的工作方式 连续运行 单步运行 空闲方式:CPU停止工作,睡眠方式 掉电保护方式:RAM工作 编程方式: 校验方式: 复位方式:P0 P1 P2 P3 全为高电平 SP=07H 其余大都00H pc=0000h 第三课 C51的语法基础 1、数据类型 (1)基本类型 0000 0001 字符型(8位) -1 1000 0001 1111 1110 1111 1111 有符号字符型(char) -128~+127 1000 0000 0111 1111 *无符号字符型(unsigned char ) 0-255 0000 0000 1111 1111 整型(16位) 有符号整型(int) -32768~+32767 *无符号整型(unsigned int) 0~65535 *位类型(1位)(bit) 长整型(32位) 有符号长整型(long (int)) 无符号长整型(unsigned long (int)) 单精度实型(float)(32) 双精度实型(double)(64) (2)构造类型 数组类型(array) 结构体(struct) 共用体(union) 枚举类型(enum) (3)指针类型 (*、&) 24位 (4)空类型(void) 2、常量 固定不变的量,称为常量,通常用大写字符串表示 常量的定义:#define 常量名 常数表达数 #define SHANGXIAN 121 3、变量 变量的定义:数据类型 存贮类型 变量名 unsigned int data i; unsigned char xdata j; 变量的存贮类型有时可以省略,即为系统默认类型 全局变量、局部变量 4、C51的存贮类型 data :内部RAM区0x00~0x7f单元,128字节 xdata:外部RAM区0x0000~0xffff单元,64K code(const) :ROM区0x0000~0xffff单元,64K 0x0000-0x1fff idata:内部RAM区0x00~0xff单元,256字节 bdata:内部RAM区0x20~0x2f单元,16字节允许位寻址 pdata:外部RAM区当P2口固定0x00~0xff单元,分页256字节 5、C51中特殊功能寄存器(SFR)的定义 IE:0XA8 IP:0XB8 TCON:0X88 TMOD:0X89 TH0:0X8C TL0:0X8A TH1:0X8D TL1:0X8B SCON:0X98 SBUF:0X99 PCON:0X87 TL2:0XCC TH2:0XCD sfr 特殊功能寄存器名=特殊功能寄存器地址; sfr IE=0XA8; sfr16 特殊功能寄存器名=低八位特殊功能寄存器地址; sfr16 TIMER2=0XCC; T2则为16位,包括TH2及TL2 注:必须是高八位与低八位寄存器地址连续才能用sfr16定义 注:#include ,则已定义 6、C51中并行I0口的定义 (1)CPU自带并口P0、P1、P2、P3,用sfr定义 P0:0x80 P1:0x90 P2:0xA0 P3:0xB0 sfr P0=0x80; 注:中已定义 (2)外扩并口 #include #define IO口名称 XBYTE [IO口地址] #include #define PA8255 XBYTE [0X7C00] 7、C51中特殊功能位及位变量的定义 (1)特殊功能位的定义 sbit 位名称=位地址; 在特殊功能寄存器中,地址以“0”或是“8”结尾的SFR才能定义特殊功能位 IE EA X ET2 ES ET1 EX1 ET0 EX0 (0XA8) sbit EA=IE^7; sbit EX1=0xAA; sbit EX1=IE^2; sbit EX1=0XA8^2; sbit led=P1^0; (2)位变量的定义 bit 变量名; bit baojing; (3)在字节变量中定义位变量 #define uchar unsigned char uchar bdata kk; kk=0x33; kk=00110011 baojing=1; sbit baojing=kk^6; 第四课 C51的语法基础之C51运算符 1、算术运算符:+ - * / %(求余运算) a=13 b=4 c=a/b=3 d=a%b=1 a=13 b=a/10 c=a%10 x=245 a=x/100 x=x%100 b=x/10 c=x%10 a=3 b=4 x=a*10+b a=3 b=4 c=5 x=a*100; x=x+b*10; x=x+c; ih=12 il=11 i=ih*100+il i=0x12 j=0x34 a=i*256+j (a=i*0x100+j) a=0x1234 a=0x03 b=0x04 x=a*16+b (x=a*0x10+b) x=16 二进制格式:x=00010000b=0x10 BCD码十进制格式:x=0x16=00010110b a=x/0x10=1取高四位 b=x%0x10=6 取低四位 数据 ASCII BCD码 二进制 0 00110000=0x30 0000 0000 1 00110001=0x31 0001 0001 2 00110010 0010 0010 9 00111001=0x39 1001 1001 10 00110001 00110000 00010000 1010 15 00010101 1111 16 00110001 00110110 00010110 00010000 10011001 01100011 10010110 01100000 96 0x96 0x60 a为BCD码转ASCII码 a=a+0x30 2、逻辑运算符:&&(与) ||(或) !(非) 非“0”即为“1” a=3 b=4 c=a&&b ?c=1; c=a||b ?c=1; c=!a ?c=0; 3、关系运算:< <= > >= ==(测试等于) !=(不等于) a=3 b=4 c=ab; c=0 c=(b==a); c=0 c=b!=a; c=1 c=b=!a;c=0 4、位运算:&(按位与) |(按位或) ~(按位取反) ^(异或) <<(左移)(舍弃高位,低位补零) >>(右移)(舍弃低位,位高补零) a=3 b=4 c=a&b; c=0x00; 00000011 c=a|b; c=0x07; 00000100 c=~a; c=11111100 00000111 c=a^b; c=00000111 xxxx xxx0 xxxx xxx /x P1^=0x01; 0000 0001 a=0x83 c=a<<1 c=0x06 10000011 01110000 00000110 c=a<<3 c=0x18 00011000 c=a>>2; c=0x20 00100000 #inclue a=0x83 c=_crol_(a,1) ;将c=字符型a的值循环左移一位 ?c=0x07 irol ;将i整型a的值循环左移一位 lrol ;将前面的l长整型a的值循环左移一位 ;后面的l表示左移,r表示右移 c=_cror_(a,1) ;将a的值循环右移一位 ?c=0xc1 5、自增与自减运算 i++ i-- ++i --i a=3 b=a++; b=++a; b=3 b=4 a=4 a=4 a=3 b=a--; b=--a; b=3 b=2 a=2 a=2 6、复合运算 += -= *= /= %= &= |= ^= <<= >>= a=a+0x30; a+=0x30; 00110011 a=a&0x01; a&=0x01; 00000001 取a的最低位 a&=0x80 10000000 取a的最高位 a=a|0x80; a|=0x80; 10110011 最高位置1 a=a<<1; a<<=1; 01100110 xxxx xxxx P1&=0xfc;//1111 1100 P1|=0x80 ;//1000 0000 第五课 C51的语法基础之C51语句 条件语句: (1)if语句 if(条件表达式)语句; 表达式为真执行语句,为假不执行 (2)if(条件表达式)语句1;else 语句2; 表达式为真执行语句1,为假执行语句2 (3)if(条件表达式1)语句1; else if(条件表达式2)语句2; else if(条件表达式3)语句3; (4)if(条件表达式1) {if(条件表达式2)语句1;else 语句2} else {if(条件表达式3)语句3;else 语句4} (5)switch case 语句 switch (表达式) { case 常数表达式1:语句1;break; case 常数表达式2:语句2;break; case 常数表达式3:语句3;break; case 常数表达式n:语句n;break; default:语句n+1; } (6)while语句 while(表达式)语句; 当表达式为真时循环执行语句,为假退出 (7)do--while语句 do 语句;while(表达式); 先执行语句,再判断条件是否成立,若成立则继续 循环执行,若不成立则退出循环。 (8)for语句 for(表达式1;表达式2;表达式3)语句; 先执行表达式1; 再判断表达式2, 若表达式2成立:则执行语句, 若表达式2不成立则退出循环; 再执行表达式3,再循环第二步; 表达式1通常控制变量初始化, 表达式3通常是对控制变量的改变; for( ;表达式2;表达式3)语句; for( ;表达式2; )语句; for( ; ; )语句; for(表达式1; ;表达式3)语句; (9)break语句 break; 退出循环层 (10)continue; 退出本次循环 (11)goto语句 跳转指令 注:不能跨函数转移 (12)return语句 用于函数调用是返回参数 return(表达式); 第六课 keil的使用 1、 keil软件的使用 (1) 新建项目 (2) 新建文件并保存 (3) 将C源程序文件添加到项目文件中 (4) 编辑并编译程序 (5) 生成.hex(十六格式文件), 第七课 C51的语法基础之C51语句的构造数据类型 1、数组类型 (1)一维数组的定义 数据类型 存贮类型 数组名[整型表达式]; uchar code duanma[3]={0xfe,0x0c,0x77 }; uchar xianfan[6]; (2)引用 数组名[下标]; P1=duanma[2]; (3)二维数组的定义 数据类型 存贮类型 数组名[整型表达式1][整型表达式2] uchar cc[2][3]={2,3,6,8,7}; uchar cc[2][3]={ {2,3,6}, {8,7,5} }; 2 3 6 8 7 5 i=cc[1][2]; i=5 2、结构体 (1)结构类型的定义 struct 结构类型名 { 成员列表; }; (2)结构变量的定义 struct 结构类型名 结构变量名; struct 结构类型名 { 成员列表; }结构变量名; struct{ 成员列表; }结构变量名; (3)结构变量的初始化 结构变量名.成员=xx; (4)结构变量的引用 i=结构变量名.成员; 3、共用体 (1)共用类型的定义 union 共用体类型名 { 成员列表; }; (2)共用变量的定义 union 共用体类型名 变量名; (3)共用体变量的初始化 共用体变量名.成员=xx; (4)结构变量的引用 i=结构变量名.成员; 4、枚举类型 (1)枚举类型的定义 enum 枚举类型名 { 成员列表; }; (2)枚举变量的定义 enum 枚举类型名 枚举变量名; 二、指针类型 (1)定义 数据类型 *指针变量名; uchar *p; (2)初始化uchar i=3; p=&i; &表示取地址 (3)引用 j=p; m=*p; (4)指针变量指向数组 uchar *p; uchar led[]={0xfe,0xfd,0xfb,0xf7}; 方法1: p=led; 方法2: p=&led[0]; i=*p++; j=*(++p); m=++(*p) k=*p; i=0xfe j=0xfd m=0xff k=0xfd 第八课 硬件的 检测 工程第三方检测合同工程防雷检测合同植筋拉拔检测方案传感器技术课后答案检测机构通用要求培训 与仿真及写片 1、 硬件检测 1、 查电源:芯片的电源联接是否正确,是否有短路现象 2、 查引脚:io口与电源正负极间是否存在短路现象 3、 仿真器与ISP使用 第九课 编程实例(一) 独立式键盘及其应用 第十课 编程实例(二) 行列式键盘及其应用 第十一课 编程实例(三) 数码管的动态显示 第十二课 编程实例(四) 数码管的静态显示 第十三课 内部资源之外部中断 中断类型 中断入口地址 中断序号 外部中断0(INT0) 0003H 0 外部中断1(INT1) 0013H 2 定时计数器0(T0) 16bit 000BH 1 定时计数器1(T1) 001BH 3 定时计数器2(T2) 002BH 5 异步串行通信口(UART) 0023H 4 CPU外围模块的掌握方法: (1)相关口线 (2)相关控制字 (3)模块的工作方式 一、外部中断 (1)相关口线 P3.2:int0,外部中断0输入。分为低电平和下降沿两种可选触发 P3.3:int1,外部中断1输入。分为低电平和下降沿两种可选触发 (2)相关控制字 IE :中断允许控制寄存器 EA X ET2 ES ET1 EX1 ET0 EX0 IE=0X85 : EA=1 EX1=1 EX0=1 EA: 中断总允许控制位 ET2:定时中断2允许控制位 ES: 串行中断控制位 ET1:定时中断1允许控制位 ET0:定时中断0允许控制位 EX0:外部中断0允许控制位 EX1:外部中断1允许控制位 当中断控制位为0时禁止中断,为1是允许中断 IP:中断优先级控制寄存器 X X PT2 PS PT1 PX1 PT0 PX0 PX0=0 PX1=1 IP=0X04; PX0:外部中断0优先级控制位 PX1:外部中断1优先级控制位 PT0:定时中断0优先级控制位 PT1:定时中断1优先级控制位 PT2:定时中断2优先级控制位 PS: 串行中断优先级控制位 优先级控制位为0时表示中断优先级为低, 为1时表示中断优先级为高, 中断优先级高的中断源可再次中断中断优先级低的中断源 同级间不能发生再次中断 TCON:定时计数器控制寄存器 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 IT0=1 : TCON=0X01 IT0:外部中断0触发方式选择位 当IT0=0时,外部中断0为低电平触发中断 当IT0=1时,外部中断0为下降沿触发中断,.优先选择 IE0:外部中断0中断请求标志位 当EA&EX0=1时,如果中断外部(P3.2)有信号时, IE0自动置1,当CPU响应中断后自动清零。 IT1:外部中断1触发方式选择位 当IT1=0时,外部中断1为低电平触发中断 当IT1=1时,外部中断1为下降沿触发中断 IE1:外部中断1中断请求标志位 当EA&EX1=1时,如果中断外部脚(P3.3)有信号时, IE1自动置1,当CPU响应中断后自动清零。 (3)CPU外围模块的 使用方法 消防栓的使用方法指针万用表的使用方法84消毒液使用方法消防灭火器使用方法铁材计算器使用方法 : <1>相关控制字初始化; <2>如果模块工作在中断模式,则编写响应中断功能的子程序。 第十四课 内部资源之定时计数器T0、T1(两节) 16位计数器:T0 TH0 TL0 T1 TH1 TL1 (1)相关口线:T0:P3.4,定时计数器0外部脉冲输入端;如果是内部时钟,则工作时钟为fosc/12,此时P3.4作IO口使用 T1:P3.5,定时计数器1外部脉冲输入端;如果是内部时钟,则工作时钟为fosc/12,此时P3.5作IO口使用 输入信号下降沿有效,前一个机期周期为高电平 ,后一个机期周期为低电平表示有脉冲,信号周期: T>=2Tfr=2*12*Tosc,即信号的频率f (1/f)>=(24/fosc) >> fosc>>2*12*f >> f<=fosc/24 (2)相关控制字:TMOD TCON IE IP TH0 TL0 TH1 TL1 TH0:定时计数器0的高8位 65536 TL0:定时计数器0的低8位 TH1:定时计数器1的高8位 TL1:定时计数器1的低8位 用于存计数值,若TR0(TR1)=1,如果有脉冲信号 则自动加1 IE:EA ET0 ET1 IP:PT0 PT1 TCON:TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 TR0:定时计数器0的启动控制位 当TR0=1,允许计数,TR0=0时,停止计数 TR1:定时计数器1的启动控制位 当TR1=1,允许计数,TR1=0时,停止计数 65535 TF0:定时计数器0的溢出标志位 0000 0000 0000 0000 1111 1111 1111 1111 当TH0与TL0计数计满溢出时自动置1; 若EA&ET0=1时,即定时中断0处于开启状态,则TF0等效为定时中断0的中断请求标志位,CPU响应中断后自动清零;如果EA&ET0=0,则必须软件清零(TF0=0)。 TF1:定时计数器1的溢出标志位 当TH1与TL1计数计满溢出时自动置1; 若EA&ET1=1时,即定时中断0处于开启状态,则TF1等效为定时中断1的中断请求标志位,CPU响应中断后自动清零;如果EA&ET1=0,则必须软件清零(TF1=0)。 TMOD: 定时计数器的工作方式选择控制寄存器 GATE C/T M1 M0 GATE C/T M1 M0 T1 T0 GATE:门控位 当GATE=0,TO(T1)与外部中断脚INT0(INT1)无关; 当GATE=1时,必须INT0(INT1)=1时定时计数器才能工作 C/T: 定时方式与计数方式选择位 C/T=0时,定时方式,计数器的工作脉冲来自内部时钟信号,为Fosc/12(即十二个振荡脉冲向定时提供一个工作脉冲,即每隔一个机器周期自动加1) C/T=1时,计数方式,计数器的工作脉冲来自外部时钟信号(P3.4或是P3.5),有脉冲时自动加1) M1M0 定时计数器的工作方式选择位 0 0 方式0,TH0(TH1)+TL0(TL1)的低五位 13位计数器 0 1 方式1,TH0(TH1)+TL0(TL1)16位计数器 1 0 方式2,8位自动重装方式,TL0(TL1)计数,TH0(TH1)存放初值 1 1 方式3,T0具有,TH0与TL0为两个独立的八位计数器,th0占用原有T1的资源TL0即可定时亦可计数(P3.4),TH0只能定时 TR0 TL0 TF0 EA ET0 进中断1 TR1 TH0 TF1 EA ET1 进中断3 T1为波特率发生器,不能用于定时或是计数 t=P(2^n-x)Tfr t:为定时时间,x:为TH0与TL0中的初值,Tfr:机期周期 n:为计数器的长度,与工作方式有关。 50 000=(2^n-x) x=2^n-50000 =65536-50 000 Tfr=12*1s/Fosc Tfr=12*1s/Fosc FOSC=24M Tfr=12*1s/(24*10^6)=0.5*10^(-6)s=0.5s t=m*Tfr f=40kHZ T=1S/40K T=25US t=T/2=12.5us m1=m/k; t=m*Tfr m:定时脉冲的个数 m=t/Tfr=12.5/0.5=25 m1=2^n-初值 25=2^13-x x:定时计数器的初值 x=8192-25=8167 初值>>TH、TL T=0.707(R1+R2)C+0.707*R2*C F=1/T 483=1/(0.707(R1+R2)C+0.707*R2*C)>>C=1000 000 /(zi*0.707*3) nf t=(2^n-初值)Tfr 1000=2^n-x x=2^13-1000=8192-1000=7192 f=38k T=1s/f t=T/2 13us=(2^n-x)Tfr 13=2^n-x x=2^n-13=2^8-13 第十五课 通用异步串行口(UART)(四节) (1)相关口线: P3.0:RXD,串行接收 P3.1:TXD,串行发送 1200 波特率:串行通行的速率,BIT/S 数据帧:起始位 8个数据位(D0-D7) 奇偶校验位 停止位 点对点通信模式:单工模式 半双工模式 全双工模式 (2)相关控制字 SCON:SM0 SM1 SM2 REN TB8 RB8 TI RI SM0 SM1 :串行工作方式选择位 0 0 方式0,同步移位寄存器方式 0 1 方式1,10位UART 1 0 方式2,11位UART(波特率不可调) 1 1 方式3,11位UART P0=0xf0 SM2:多机通信位 0 REN=1,即允许接收数据(接收与RB8无关) 1 REN=1,且RB8=1时才接收前收前八位(SBUF) REN 接收使能位 0 禁止接收 1 允许接收 TB8 发送数据第九位,在多机通迅中,TB8=1,表示前八位(SBUF)发送地址信号,TB8=0,表示前八位(SBUF)发送数据信号。 RB8 接收数据第九位,由发送方决定 TI 发送中断标志位 当串口发送完一帧数据,自动置“1”,如果EA&ES=1,则会触发串行中断,但必须软件清零。 RI 接收中断标志位 当串口接收完一帧数据,自动置“1”,如果EA&ES=1,则会触发串行中断,但必须软件清零。 SBUF:串行缓冲器,专用于收发数据 发:SBUF=0X0f; 收:data1=SBUF; MOV A,SBUF PCON: 电源管理寄存器 SMOD X X X GF1 GF0 PD ID SMOD 波特率倍增位 0 波特率不倍增 1 波特率倍增 GF1 GF0 用户标志位 PD 掉电保护模式控制位 RAM保存数据,其它部件停上工作,只能复位激活 ID 空闲模式控制位,CPU不工作,其余外围模块正常,可用中断激活 TMOD TH1 TL1 TCON与PCON配合设置通信波特率, T1工作达方式2,定时状态 IE IP 控制串行中断 EA ES PS三位 (3)工作方式 1、方式0 八位同步移位控制方式(属于主动的同步串行模式) 特点:波特率=Fosc/12; 数据帧格式:8位 P3.0: 数据线,即可发送亦接收 P3.1:时钟线,用于产生移位脉冲 2、方式1 10位通用异步串行通信模式 特点:波特率=(2SMOD/32)*Fosc/(12(256-x)), Fosc=11.0592 9600=28800/(256-X) X为T1工作在定时mode 2 下TH1中的初值 数据帧格式:10位,起始位 8位数据位 停止位 3、方式2 11位通用异步串行通信模式 特点:波特率=2^SMOD*Fosc/64; 数据帧格式:11位, 起始位 8位数据位 奇偶校验位(TB8或是RB8) 停止位 4、方式3 11位通用异步串行通信模式 特点:波特率=(2^SMOD/32)*Fosc/(12(256-x)), X为T1工作在mode 2 下TH1中的初值 数据帧格式:11位, 起始位 8位数据位 奇偶校验位(TB8或是RB8) 停止位 (4)串口用法:1、设相同工作方式 2、设相同波特率 3、制定通信 协议 离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载 第十课 51的外部并口扩展 1、51的外部三总线 数据总线(DB):P0 地址总线(AB):P0(低八位)、P2(高八位) 控制总线(CB):ALE /EA /PSEN /WR(P3.6) /RD(P3.7) ALE:外部低八位地址总线锁存信号,在外部扩展接八D锁存器的锁存脚 Fosc/6晶振频率输出 MOVX 、MOVC 指令产生正脉冲锁存信号 /EA:外部程序存储器使能信号 接低电平:只能使用外部程序存储器 接高电平:先使用内部ROM,当地址超出时自动转向外ROM /PSEN:外部程序存储器读选通信号(MOVC 指令自动产生信号) /WR:外部RAM写选通信号 /RD:外部RAM读选通信号 2、扩展外部并口器件分类:(1)程序存储器 (2)数据存储器 (3)IO口:简单IO口与可编程IO扩展 (4)功能部件 3、程序存储器的扩展 ROM:只读存储器 类型:FLASH(闪存) EEPROM (电擦除电写入) OTPROM (一次性) EPROM(电写入紫外线擦除) 八位ROM 27xx 28xx 29xx 39xx 4、IO口扩展 1)输入扩展 缓冲器:244 245 隔离总线数据 2)输出扩展 锁存器:273 573 373 374 377 3)可编程IO口扩展 8255 8155 通用IO口(595) 8279 (MX7219)键盘显示接口芯片 4)8255 可编程IO口 PA PB PC 并口 COM 命令字 PA+PC4-PC7 A组 PB+PC0-PC3 B组 A1A0 D 0 0 PA 0 1 PB 1 0 PC 1 1 COM 8255命令字构成 D7 D6 D5 D4 D3 D2 D1 D0 // 1 0 0 x 0 0 x 0 (1)当D7=1时,D6—D0设置8255工作方式 D0 PC0-PC3输入输出方向 当D0=0 输出 D0=1 输入 D1 PB输入输出方向 D2 B组的工作方式 D2=0 B组方式0,基本输入输出方式 D2=1 B组方式1,选通输入输出方式 PB作IO口,PC口作控制线 D3 PC4-PC7输入输出方向 D4 PA输入输出方向 D6 D5 A组的工作方式 0 0 A组方式0,基本输入输出方式 0 1 A组方式1,选通输入输出方式 PA作IO口,PC口作控制线 1 X A组方式2,双向数据传送方式 PB方式0下基本输入输出方式 PA双向数据传送 PC口作控制线 (2)D7=0时,D6-D0 PC口线操作 D7 D6 D5 D4 D3 D2 D1 D0 0 x x x a2 a1 a0 s 0 x x x 0 0 0 pc0= d0 0 x x x 0 0 1 pc1= d0 0 1 1 1 pc7= d0 8255的使用方法:(1)初始化 (2)送数据
本文档为【51单片机常用芯片资料C51精简版教程 原版】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_997338
暂无简介~
格式:doc
大小:882KB
软件:Word
页数:0
分类:
上传时间:2018-09-08
浏览量:21