mcs 51系列单片机
kuaidi.ping-jia.net 作者:佚名 更新日期:2024-08-27
mcs-51系列单片机为几位单片机
2.利用编程器将用户程序送人单片机的存储器,检查程序,修改程序,监视单片机的工作状态。
3.51有5个中断源
4.Mcs-51是8位单片机;I/O的特点有具有双向通道,数据锁存,输入缓冲;P3.0和P3.1分别是串行输入口和WR串行输出口;作为输入时应该注意*****。
5.Mcs-51单片机中振荡电路,片内有一个高增益反向放大器,用于构成振荡器。外接晶振,反相器的输入端和输出端跨接石英晶体和两个电容就构成了稳定的自激振荡器。
6.51单片机的封装引脚有三种类型:40脚DIP,44脚PLCC,48脚DIP,52脚PLCC,68脚PLCC。引脚定义:1--8:P0.0--0.7,9:RST/Vpd,10--17:P3.0-P3.7,18:XTAL2,19:XTAL1,20:Vss,21--28:P2.0-P2.7,29:~PSEN ,30:ALE/~PROG,31:~EA/pp,32--39:P0.7-P0.0,40:Vcc。
7.单片机片内,片外存储器的选择:(程序存储器)由硬件控制信号~EA/Vpp决定,(数据存储器)由软件指令是MOVX还是MOV决定;
8.MCS-51的程序存储器用于存放运算中间结果。
9.PSW是一个8位的专用寄存器,用于存程序运行中的各种状态信息。
10.决定程序执行顺序的寄存器是程序计数器PC。
11.ALE引脚的特点:(访问外部存储器时)信号上升沿可作16为地址低8位的所存信号,信号在两个机器周期中出现一次;(不访问时)向外输出振荡频率1/6的脉冲信号,可作其他外部接口的时钟信号。通过该信号可以判断 CPU是否正常工作
12.MOVC的功能:用于读取程序存储器表格的数据传送
13:51的指令寄存器是对指令寄存器中的指令进行译码,将指令转变为执行此指令所需的电信号。
完整的指令格式:由操作码和操作数组成
DAC0832的输入电平与TTL电平兼容。
AD与DA的作用是:AD的作用是把模拟信号转换成数字信号,DA的作用是把数字信号转换成模拟信号。 0809是8位的AD转换器及有11个模拟输入通道,4位地址输入选择。17. DAC0832是电流输出型数模转换芯片,分辨率8位,三种工作方式:直通,单缓冲,双缓冲。
单片机的复位电路的特点:简单而重要,上电复位靠电容充电,按键复位靠RC微分电路产生正脉冲和电阻与VCC电源接通。是第9引脚复位。单片机开始工作前需要复位,单片机受到干扰后程序跑飞需要复位。
单片机最小系统硬件设计图。由复位电路、晶振电路和单片机组成,单片机~EA端一般接高。
MCS—51单片机最小系统的振荡周期,机器周期,时钟周期的关系:12个振荡周期=1个机器周期=6个时钟周期。
8051在存储结构上采用哈佛结构。
串行通信中按数据流的方向分成哪三种基本的传送方式,
8051与8031的区别是:有无ROM存储器。
程序状态字寄存器PSW的特点:保存指令执行结果的特征信息。由硬件自动生成。
计算机总线的分类:数据总线,地址总线,控制总线。或片内总线,片外总线。
80C51单片机的程序存储器最大寻址范围256B。
编程:跑马灯程序编写:8个发光二极管流水灯程序编写
LED跑马灯(从右至左)
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
void DelayMS(uint x)
{
uchar i;
while(x--)
{
for(i=0;i<255;i++);
}
}
void main()
{
P1=0xfe;
while(1)
{ if(P1==0x7f)
P1=0xfe;
else
P1=_crol_(P1,1);
DelayMS(80);
}
}
LED跑马灯(从左至右)
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
void DelayMS(uint x)
{
uchar i;
while(x--)
{
for(i=0;i<255;i++);
}
}
void main()
{
P1=0x7f;
while(1)
{ if(P1==0xfe)
P1=0x7f;
else
P1=_cror_(P1,1);
DelayMS(40);
}
}
LED跑马灯(左右循环)
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
void DelayMS(uint x)
{
uchar i;
while(x--)
{
for(i=0;i<255;i++);
}
}
void main()
{
uchar i;
P1=0x7f;
while(1)
{
for(i=0;i<7;i++)
{P1=_cror_(P1,1);
DelayMS(40); }
for(i=0;i<7;i++)
{P1=_crol_(P1,1);
DelayMS(40); }
}
}
单个LED的闪烁
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit LED = P1^0;
void DelayMS(uint x)
{
uchar i;
while(x--)
{
for(i=120;i>0;i--);
}
}
void main()
{
while(1)
{
LED = ~LED;
DelayMS(150);
}
}
连绵灯
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
void DelayMS(uint x)
{
uchar i;
while(x--)
{
for(i=0;i<255;i++);
}
}
void main()
{
P1=0x0e;
while(1)
{ if(P1==0xc1)
P1=0x0e;
else
P1=_crol_(P1,1);
DelayMS(80);
}
}
/* 花样流水灯程序 间隔300ms先奇数亮再偶数亮,循环三次;一个灯上下循环三次;两个分别从两边往中间流动三次;再从中间往两边流动三次;8个全部闪烁3次;关闭发光管,程序停止。*//*********************************************************/#include<reg52.h> //52单片机头文件#include <intrins.h> //包含有左右循环移位子函数的库#define uint unsigned int //宏定义#define uchar unsigned char //宏定义void delay(uint z) //延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms.{ //delay(500);大约延时500ms. uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); }void main() //主函数{ uchar a,i,j; for(j=0;j<3;j++) //寄偶交替 { P1=0x55; //点亮小灯 delay(300); //延时300毫秒 P1=0xaa; delay(300); //延时300毫秒 } for(j=0;j<3;j++) //流水灯 { a=0xfe; for(i=0;i<8;i++) { P1=a; //点亮小灯 delay(300); //延时300毫秒 a=_crol_(a,1); } } P1=0xff; for(j=0;j<3;j++) //从两边往中间流 { P1=0x7e; //点亮小灯
delay(300); //延时300毫秒 P1=0xbd; delay(300); //延时300毫秒 P1=0xdb; //点亮小灯 delay(300); //延时300毫秒 P1=0xe7; delay(300); //延时300毫秒 } P1=0xff; for(j=0;j<3;j++) //从中间往两边流 { P1=0xe7; //点亮小灯 delay(300); //延时300毫秒 P1=0xdb; delay(300); //延时300毫秒 P1=0xbd; //点亮小灯 delay(300); //延时300毫秒 P1=0x7e; delay(300); //延时300毫秒 } P1=0xff; for(j=0;j<6;j++) //全部闪烁 { P1=~P1; //点亮小灯 delay(300); //延时300毫秒 } P1=0xff; while(1);} a=_crol_(a,1); } } for(j=0;j<3;j++) { a=0xfa; for(i=0;i<5;i++) { P1=a; delay(300); a=_crol_(a,1); } } P1=0xff; for(j=0;j<3;j++) //从两边往中间流 { P1=0x7e; //点亮小灯 delay(300); //延时300毫秒 P1=0xbd; delay(300); //延时300毫秒 P1=0xdb; //点亮小灯 delay(300); //延时300毫秒 P1=0xe7; delay(300); //延时300毫秒 } P1=0xff; for(j=0;j<3;j++) //从中间往两边流 { P1=0xe7; //点亮小灯 delay(300); //延时300毫秒 P1=0xdb; delay(300); //延时300毫秒 P1=0xbd; //点亮小灯 delay(300); //延时300毫秒 P1=0x7e; delay(300); //延时300毫秒 } for(j=0;j<5;j++) { P1=0x66; delay(300); P1=0x99; delay(300); } P1=0xff; for(j=0;j<6;j++) //全部闪烁 { P1=~P1; //点亮小灯 delay(300); //延时300毫秒 } P1=0xff; while(1);}
你这是考试题,还是自己看书吧,书上写的很清楚…
MCS-51内核单片机是8位单片机,CISC指令集。
STC单片机为51内核,在51的基础上增加了一些片内外设,同时加快了速度。
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制电路、模拟多路转换器、A/D转换器等电路)集成到一块硅片上构成的一个小而完善的微型计算机系统,在工业控制领域广泛应用。从上世纪80年代,由当时的4位、8位单片机,发展到现在的300M的高速单片机。
2.利用编程器将用户程序送人单片机的存储器,检查程序,修改程序,监视单片机的工作状态。
3.51有5个中断源
4.Mcs-51是8位单片机;I/O的特点有具有双向通道,数据锁存,输入缓冲;P3.0和P3.1分别是串行输入口和WR串行输出口;作为输入时应该注意*****。
5.Mcs-51单片机中振荡电路,片内有一个高增益反向放大器,用于构成振荡器。外接晶振,反相器的输入端和输出端跨接石英晶体和两个电容就构成了稳定的自激振荡器。
6.51单片机的封装引脚有三种类型:40脚DIP,44脚PLCC,48脚DIP,52脚PLCC,68脚PLCC。引脚定义:1--8:P0.0--0.7,9:RST/Vpd,10--17:P3.0-P3.7,18:XTAL2,19:XTAL1,20:Vss,21--28:P2.0-P2.7,29:~PSEN ,30:ALE/~PROG,31:~EA/pp,32--39:P0.7-P0.0,40:Vcc。
7.单片机片内,片外存储器的选择:(程序存储器)由硬件控制信号~EA/Vpp决定,(数据存储器)由软件指令是MOVX还是MOV决定;
8.MCS-51的程序存储器用于存放运算中间结果。
9.PSW是一个8位的专用寄存器,用于存程序运行中的各种状态信息。
10.决定程序执行顺序的寄存器是程序计数器PC。
11.ALE引脚的特点:(访问外部存储器时)信号上升沿可作16为地址低8位的所存信号,信号在两个机器周期中出现一次;(不访问时)向外输出振荡频率1/6的脉冲信号,可作其他外部接口的时钟信号。通过该信号可以判断 CPU是否正常工作
12.MOVC的功能:用于读取程序存储器表格的数据传送
13:51的指令寄存器是对指令寄存器中的指令进行译码,将指令转变为执行此指令所需的电信号。
完整的指令格式:由操作码和操作数组成
DAC0832的输入电平与TTL电平兼容。
AD与DA的作用是:AD的作用是把模拟信号转换成数字信号,DA的作用是把数字信号转换成模拟信号。 0809是8位的AD转换器及有11个模拟输入通道,4位地址输入选择。17. DAC0832是电流输出型数模转换芯片,分辨率8位,三种工作方式:直通,单缓冲,双缓冲。
单片机的复位电路的特点:简单而重要,上电复位靠电容充电,按键复位靠RC微分电路产生正脉冲和电阻与VCC电源接通。是第9引脚复位。单片机开始工作前需要复位,单片机受到干扰后程序跑飞需要复位。
单片机最小系统硬件设计图。由复位电路、晶振电路和单片机组成,单片机~EA端一般接高。
MCS—51单片机最小系统的振荡周期,机器周期,时钟周期的关系:12个振荡周期=1个机器周期=6个时钟周期。
8051在存储结构上采用哈佛结构。
串行通信中按数据流的方向分成哪三种基本的传送方式,
8051与8031的区别是:有无ROM存储器。
程序状态字寄存器PSW的特点:保存指令执行结果的特征信息。由硬件自动生成。
计算机总线的分类:数据总线,地址总线,控制总线。或片内总线,片外总线。
80C51单片机的程序存储器最大寻址范围256B。
编程:跑马灯程序编写:8个发光二极管流水灯程序编写
LED跑马灯(从右至左)
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
void DelayMS(uint x)
{
uchar i;
while(x--)
{
for(i=0;i<255;i++);
}
}
void main()
{
P1=0xfe;
while(1)
{ if(P1==0x7f)
P1=0xfe;
else
P1=_crol_(P1,1);
DelayMS(80);
}
}
LED跑马灯(从左至右)
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
void DelayMS(uint x)
{
uchar i;
while(x--)
{
for(i=0;i<255;i++);
}
}
void main()
{
P1=0x7f;
while(1)
{ if(P1==0xfe)
P1=0x7f;
else
P1=_cror_(P1,1);
DelayMS(40);
}
}
LED跑马灯(左右循环)
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
void DelayMS(uint x)
{
uchar i;
while(x--)
{
for(i=0;i<255;i++);
}
}
void main()
{
uchar i;
P1=0x7f;
while(1)
{
for(i=0;i<7;i++)
{P1=_cror_(P1,1);
DelayMS(40); }
for(i=0;i<7;i++)
{P1=_crol_(P1,1);
DelayMS(40); }
}
}
单个LED的闪烁
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit LED = P1^0;
void DelayMS(uint x)
{
uchar i;
while(x--)
{
for(i=120;i>0;i--);
}
}
void main()
{
while(1)
{
LED = ~LED;
DelayMS(150);
}
}
连绵灯
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
void DelayMS(uint x)
{
uchar i;
while(x--)
{
for(i=0;i<255;i++);
}
}
void main()
{
P1=0x0e;
while(1)
{ if(P1==0xc1)
P1=0x0e;
else
P1=_crol_(P1,1);
DelayMS(80);
}
}
/* 花样流水灯程序 间隔300ms先奇数亮再偶数亮,循环三次;一个灯上下循环三次;两个分别从两边往中间流动三次;再从中间往两边流动三次;8个全部闪烁3次;关闭发光管,程序停止。*//*********************************************************/#include<reg52.h> //52单片机头文件#include <intrins.h> //包含有左右循环移位子函数的库#define uint unsigned int //宏定义#define uchar unsigned char //宏定义void delay(uint z) //延时函数,z的取值为这个函数的延时ms数,如delay(200);大约延时200ms.{ //delay(500);大约延时500ms. uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); }void main() //主函数{ uchar a,i,j; for(j=0;j<3;j++) //寄偶交替 { P1=0x55; //点亮小灯 delay(300); //延时300毫秒 P1=0xaa; delay(300); //延时300毫秒 } for(j=0;j<3;j++) //流水灯 { a=0xfe; for(i=0;i<8;i++) { P1=a; //点亮小灯 delay(300); //延时300毫秒 a=_crol_(a,1); } } P1=0xff; for(j=0;j<3;j++) //从两边往中间流 { P1=0x7e; //点亮小灯
delay(300); //延时300毫秒 P1=0xbd; delay(300); //延时300毫秒 P1=0xdb; //点亮小灯 delay(300); //延时300毫秒 P1=0xe7; delay(300); //延时300毫秒 } P1=0xff; for(j=0;j<3;j++) //从中间往两边流 { P1=0xe7; //点亮小灯 delay(300); //延时300毫秒 P1=0xdb; delay(300); //延时300毫秒 P1=0xbd; //点亮小灯 delay(300); //延时300毫秒 P1=0x7e; delay(300); //延时300毫秒 } P1=0xff; for(j=0;j<6;j++) //全部闪烁 { P1=~P1; //点亮小灯 delay(300); //延时300毫秒 } P1=0xff; while(1);} a=_crol_(a,1); } } for(j=0;j<3;j++) { a=0xfa; for(i=0;i<5;i++) { P1=a; delay(300); a=_crol_(a,1); } } P1=0xff; for(j=0;j<3;j++) //从两边往中间流 { P1=0x7e; //点亮小灯 delay(300); //延时300毫秒 P1=0xbd; delay(300); //延时300毫秒 P1=0xdb; //点亮小灯 delay(300); //延时300毫秒 P1=0xe7; delay(300); //延时300毫秒 } P1=0xff; for(j=0;j<3;j++) //从中间往两边流 { P1=0xe7; //点亮小灯 delay(300); //延时300毫秒 P1=0xdb; delay(300); //延时300毫秒 P1=0xbd; //点亮小灯 delay(300); //延时300毫秒 P1=0x7e; delay(300); //延时300毫秒 } for(j=0;j<5;j++) { P1=0x66; delay(300); P1=0x99; delay(300); } P1=0xff; for(j=0;j<6;j++) //全部闪烁 { P1=~P1; //点亮小灯 delay(300); //延时300毫秒 } P1=0xff; while(1);}
你这是考试题,还是自己看书吧,书上写的很清楚…