c51笔记.docx
- 文档编号:16317405
- 上传时间:2023-07-12
- 格式:DOCX
- 页数:19
- 大小:104.33KB
c51笔记.docx
《c51笔记.docx》由会员分享,可在线阅读,更多相关《c51笔记.docx(19页珍藏版)》请在冰点文库上搜索。
c51笔记
•电源引脚
–VCC(Pin40):
正电源引脚。
正电源接4.0~5.0V电压,正常工作电压为+5V。
–GND(Pin20):
接地引脚。
•时钟引脚
–XTAL1(Pin19):
用作片内振荡电路的输入端。
–XTAL2(Pin18):
用作片内振荡电路的输出端或者外部时钟源的输入引脚。
•P0端口即P0.0~P0.7,占据Pin39~Pin32共8个引脚。
P0端口具有两个功能,既可以用作双向数据总线口,也可以分时复用输出低8位地址总线。
•P1端口即P1.0~P1.7,占据Pin1~Pin8共8个引脚。
P1端口一般用做通用I/O端口,是8位准并行的,具备4个TTL负载的驱动能力。
P1端口可以用做位处理,既各位都可以单独输出或输入数据。
P2端口即P2.0~P2.7,占据Pin21~Pin28共8个引脚。
P2端口可以用作通用I/O端口,或者在扩展外部存储器时用作高8位地址线。
•
•
•
•
•
•
•
•
•
•
•
•
•
•P3端口即P3.0~P3.7,占据Pin10~Pin17共8个引脚。
P3端口可以用作通用I/O端口,可进行位操作,同时还具有特定的第二功能。
P3端口的第二功能
I/O引脚
第二功能引脚名称
说明
P3.0
RXD
串行通信的数据接收端口
P3.1
TXD
串行通信的数据发送端口
P3.2
外部中断0的请求端口
P3.3
外部中断1的请求端口
P3.4
T0
定时/计数器0的外部事件计数输入端
P3.5
T1
定时/计数器1的外部事件计数输入端
P3.6
外部数据存储单元的写选通信号
P3.7
外部数据存储单元的读选通信号
•单片机的复位引脚为RST(Pin9),单片机内部CPU的复位信号便从这里输入。
•单片机复位完全通过RST引脚来完成,其基本原理是在单片机的时钟振荡电路启动后,如果RST引脚外加两个机器周期(即24个时钟振荡脉冲)以上的高电平,单片机便实现了复位。
上电复位电路
手动加上电复位电路
•ALE引脚(Pin30)具有两种功能,可以作为地址锁存使能端和编程脉冲输入端。
下面分别进行介绍。
–当作为地址锁存使能端时为ALE。
当单片机访问外部程序存储器时,ALE(地址锁存)的负跳变将低8位地址打入锁存。
而当访问外部数据存储器时,例如执行MOVX类指令,ALE引脚会跳过一个脉冲。
当单片机在非访问内部程序存储器时,ALE引脚将有一个1/6振荡频率的正脉冲信号输出,该信号可以用于外部计数或电路其他部分的时钟信号。
–当作为编程脉冲输入端时为,在进行程序下载时使用。
•ALE引脚(Pin30)具有两种功能,可以作为地址锁存使能端和编程脉冲输入端。
下面分别进行介绍。
–当作为地址锁存使能端时为ALE。
当单片机访问外部程序存储器时,ALE(地址锁存)的负跳变将低8位地址打入锁存。
而当访问外部数据存储器时,例如执行MOVX类指令,ALE引脚会跳过一个脉冲。
当单片机在非访问内部程序存储器时,ALE引脚将有一个1/6振荡频率的正脉冲信号输出,该信号可以用于外部计数或电路其他部分的时钟信号。
–当作为编程脉冲输入端时为,在进行程序下载时使用。
•起始伪指令ORG用于标记一个汇编语言程序的开始。
•这里,16位地址便是汇编程序块或数据块存放的起始地址。
如果省略ORG伪指令,则单片机程序代码将默认从0000H单元开始存放。
•结束伪指令END用于标记一个汇编语言程序的结束。
•这里,标号和表达式都可以省略。
在汇编语言程序执行时,END之后所写的任何指令都不予以处理。
•一个程序只能有一个END伪指令。
•等值伪指令EQU相当于重命名的概念,其采用一个规定的字符名称来代替一个数或特定的汇编符号。
•使用伪指令EQU时必须先赋值,后使用,而不能先使用后赋值。
另外,给字符名称所赋的值可以是8位数,也可以是16位数。
用EQU定义的字符名称不能和汇编语言的关键字同名。
•地址赋值伪指令DATA是用指定的字符名称来代替数据地址或代码地址。
•DATA伪指令在程序中常用来定义数据地址。
就功能上来说,伪指令DATA与EQU有些类似。
区别如下:
–EQU伪指令必须先定义后使用,而DATA伪指令则无此限制;
–EQU伪指令可以把一个汇编符号赋给一个字符名称,而DATA伪指令则不能;
–DATA伪指令可将一个表达式的值赋给一个字符变量,所定义的字符变量也可以出现在表达式中,而EQU定义的字符则不能这样使用。
•字节保存伪指令DB用于在单片机内存中保存数据表,只能对程序存储器进行操作。
•其中,8位字节数据表可以是一个或多个字节数据、字符串或表达式。
–在数据表中,各项数据用“,”分隔,一个数据项占一个存储单元。
–所有的数据项是从标号指定的地址单元开始,将数据表中的字节数据按顺序依次保存。
–数据项可以采用十进制、二进制或者十六进制表示。
•字保存伪指令DW用于在单片机内存中保存双字节数据表,只能对程序存储器进行操作。
•其中,16位字数据表可以是一个或多个字节数据、字符串或表达式。
–在数据表中,各项数据用“,”分隔,一个数据项占一个存储单元。
–所有的数据项是从标号指定的地址单元开始,将数据表中的字节数据按顺序依次保存。
–16位数据要占用两个单元的存储器,高8位数据存入低地址字节,低8位数据存入高地址字节。
•
•
•空间预留伪指令DS用于在单片机内存中划分出一定的存储空间用作备用区域,只能对程序存储器进行操作。
•这里,表达式表示了从标号指定的地址单元开始,保留存储单元的个数。
•位变量伪指令BIT用于给位地址定义一个字符名称。
•其中,位地址需要参考单片机中的定义,字符名称就是位变量。
•data存储类型可以直接寻址片内数据存储区(128字节),访问速度快。
•bdata存储类型可位寻址片内数据存储区(16字节),允许位与字节混合访问。
•idata存储类型间接寻址片内数据存储区,可访问片内全部RAM地址空间(256字节)。
•pdata存储类型分页寻址外部数据存储区(256字节),在汇编语言中由MOVX@R0来访问。
•xdata存储类型可寻址片外数据存储区(64KB),在汇编语言中由MOVX@DPTR访问。
•code存储类型程序代码存储区(64KB),在汇编语言中由MOVC@DPTR访问。
•sfr存储类型用于字节寻址,定义8位特殊功能寄存器。
•sfr16存储类型用于字寻址,定义16位特殊功能寄存器。
•其一般形式如下:
–sfr16特殊功能寄存器名=特殊功能寄存器地址常数
•sbit存储类型用于位寻址,从位寻址字节中定义位变量。
•bit用于定义位变量,其值为0或1。
其定义形式如下:
–bit变量名
定时器/计数器工作模式0及其程序设计
•工作模式0是一个13位计数器
TMOD=0x00;//设置定时器T0为模式0
TL0=0x0C;//初始化
TH0=0x0F0;
•工作模式1是一个16位计数器
TMOD=0x10;//设置定时器T1为模式1
TL1=0x0F0;//初始化
TH1=0x0D8
•工作模式2是一个8位自动重新装入的计数器
TMOD|=0x20;//初始化T1为定时功能,工作模式2
10PCON|=0x80;//设置SMOD=1
11TL1=0xF4;//波特率4800bit/s,初值
12TH1=0xF4
•工作模式3是两个相互单独的8位计数器
TMOD=0x03;//设置定时器T0为模式3
18TL0=0x9C;//初始化
19TH0=0x38
•中断标志控制寄存器TCON
•中断标志控制寄存器SCON
•中断允许标志寄存器IE
中断优先级标志寄存器IP
外部中断源及其程序设计
01#include
02voidISR0(void)interrupt0//外部中断0服务例程
03{
04P1=~P1;//P1端口反相
05}
06voidISR1(void)interrupt2//外部中断1服务例程
07{
08P2=~P2;//P2端口反相
09}
10voidmain(void)//主函数
11{
12IP=0x05;//外部中断0和外部中断1设置为高优先级
13IT0=1;//外部中断0为下降沿触发
14IT1=1;//外部中断1为下降沿触发
15EX0=1;//开EX0中断
16EX1=1;//开EX1中断
17EA=1;
18while
(1)//主循环
19{
20}
21}
定时中断源及其程序设计
01#include
02voidT0ISR(void)interrupt1//定时器T0中断响应
03{
04TL0=0x0C;//重置计数初值
05TH0=0x0F0;
06P1=~P1;//反相
07}
08voidmain(void)//主函数
09{
10TMOD=0x00;//设置定时器T0为模式0
11TL0=0x0C;//初始化
12TH0=0x0F0;
13TR0=1;
14ET0=1;
15EA=1;//开中断
16while
(1)//主循环
17{
18}
19}
串行中断源及其程序设计
01#include
02voidSISR(void)interrupt4//串行中断服务例程
03{
04TI=0;
05}
06voidmain(void)//主函数
07{
08inti;
09i=0x68;//初始化数据
10SCON=0x00;//初始化串行口模式0
11ES=1;//开启串行中断
12SBUF=i;//将数据送到SBUF,启动串行输出
13EA=1;//开中断
14while
(1)//主循环
15{
16}
17}
•51系列单片机的串行接口
•串行接口工作模式0及其程序设计
•串行接口工作模式1及其程序设计
•串行接口工作模式2及其程序设计
•串行接口工作模式3及其程序设计
异步串行通信的波特率
•1波特=1bps(位/秒)
串行接口控制寄存器SCON
•串行接口控制寄存器SCON用于选择串行通信的工作方式和某些控制功能。
波特率选择寄存器PCON
•波特率选择寄存器PCON用于波特率的倍增控制。
•串行工作模式0的波特率
–模式0波特率=fosc/12
•串行工作模式1的波特率
–模式1波特率=T1溢出率·2SMOD/32
•串行工作模式2的波特率
–模式2波特率=fosc·2SMOD/64
•串行工作模式3的波特率
–模式3波特率=T1溢出率·2SMOD/32
串行接口工作模式0及其程序设计
01#include
02voidmain(void)//主函数
03{
04inti;//声明变量
05i=67;//初始化
06SCON=0x00;//初始化串行口模式0
07ES=0;//禁止串行中断
08SBUF=i;//输出数据到SBUF,启动串行输出
09while(TI)//等待TI=1
10{
11TI=0;//TI清零
12}
13}
串行接口工作模式1及其程序设计
01#include
02voidmain(void)//主函数
03{
04SCON=0x50;//初始化串行口模式1
05TMOD=0x20;//初始化T1为定时功能,模式2
06PCON=0x80;//设置SMOD=1
07TL1=0xF4;//波特率4800bit/s,初值
08TH1=0xF4;
09ES=0;//禁止串行中断
10TR1=1;//启动定时器
11SBUF=0x76;
12while(TI)//等待TI=1
13{
14TI=0;//TI清零
15}
16SBUF=0x77;
17while(TI)//等待TI=1
18{
19TI=0;//TI清零
20}
21}
串行接口工作模式2及其程序设计
01#include
02voidmain(void)//主函数
03{
04SCON=0x80;//初始化串行口模式2
05PCON=0x80;//设置SMOD=1
06ES=0;//禁止串行中断
07TB8=0;//奇偶校验位
08SBUF=0x46;
09while(TI)//等待TI=1
10{
11TI=0;//TI清零
12}
13}
串行接口工作模式3及其程序设计
01#include
02voidmain(void)//主函数
03{
04SCON=0xC0;//初始化串行口模式2
05PCON=0x80;//设置SMOD=1
06TL1=0xF4;//波特率4800bit/s,初值
07TH1=0xF4;
08ES=0;//禁止串行中断
09TR1=1;//启动定时器
10TB8=0;//奇偶校验位
11SBUF=0x46;
12while(TI)//等待TI=1
13{
14TI=0;//TI清零
15}
16}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c51 笔记