导航:首页 > 操作系统 > 251单片机

251单片机

发布时间:2022-11-02 19:27:43

① 如何实现2个51单片机之间通过串口通信的源程序

汇编编写的模拟串口通信程序

T2作为波特率控制
UART_RXD 是硬中断0或1口,如果能进入中断,说明该线有一个起始位产生,进入中断后调
用下面的接收程序。退出硬中断之前还需要将硬中断标志重新复位。
UART_TXD是任何其它IO即可。

UART_SEND:
PUSH IE
PUSH DPH
PUSH DPL
PUSH PSW
PUSH 00H
PUSH ACC
CLR EA
SETB UART_TXD ;START BIT

MOV R0,A
CLR TR2 ;TR2置1,计数器2启动,时间计数启动。
MOV A,RCAP2L;计数器2重新装载值
MOV TL2,A ;置计数器2初值 ;T2需要重新装载
MOV A,DPH
MOV A,RCAP2H
MOV TH2,A
MOV A,R0

SETB TR2 ;TR2置1,计数器
JNB TF2,$
CLR TF2
JNB TF2,$
CLR TF2

CLR UART_TXD ;START BIT
JNB TF2,$
CLR TF2
JNB TF2,$
CLR TF2

MOV R0,#08H
UART_SEND_LOOP:
RRC A
MOV UART_TXD,C ;8 BIT
JNB TF2,$
CLR TF2
JNB TF2,$
CLR TF2
DJNZ R0,UART_SEND_LOOP

SETB UART_TXD ;END BIT
JNB TF2,$
CLR TF2
JNB TF2,$
CLR TF2

POP ACC
POP 00H
POP PSW
POP DPL
POP DPH
POP IE
RET

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
UART_REC:
PUSH IE
PUSH DPH
PUSH DPL
CLR EA

CLR TR2 ;TR2置1,计数器2启动,时间计数启动。
MOV A,RCAP2L;计数器2重新装载值
MOV TL2,A ;置计数器2初值 ;T2需要重新装载
MOV A,DPH
MOV A,RCAP2H
MOV TH2,A

JB UART_RXD,$ ;REC
SETB TR2 ;TR2置1,计数器2启动,时间计数启动。
JNB TF2,$
CLR TF2 ;0.5 BIT

JNB TF2,$
CLR TF2 ;1 BIT

JNB TF2,$
CLR TF2 ;1.5 BIT
MOV C,UART_RXD
MOV ACC.0,C

JNB TF2,$
CLR TF2

JNB TF2,$
CLR TF2 ;2.5
MOV C,UART_RXD
MOV ACC.1,C

JNB TF2,$
CLR TF2

JNB TF2,$
CLR TF2 ;3.5
MOV C,UART_RXD
MOV ACC.2,C

JNB TF2,$
CLR TF2

JNB TF2,$
CLR TF2 ;4.5
MOV C,UART_RXD
MOV ACC.3,C

JNB TF2,$
CLR TF2

JNB TF2,$
CLR TF2 ;5.5
MOV C,UART_RXD
MOV ACC.4,C

JNB TF2,$
CLR TF2

JNB TF2,$
CLR TF2 ;6.5
MOV C,UART_RXD
MOV ACC.5,C

JNB TF2,$
CLR TF2

JNB TF2,$
CLR TF2 ;7.5
MOV C,UART_RXD
MOV ACC.6,C

JNB TF2,$
CLR TF2

JNB TF2,$
CLR TF2 ;8.5
MOV C,UART_RXD
MOV ACC.7,C

JNB TF2,$
CLR TF2 ;9.5
JNB UART_RXD,$ ;等待停止位,并重新复位计数器
SETB UART_RXD

POP DPL
POP DPH
POP IE
RET
补充回答:
串口调试

1. 发送:向总线上发命令
2. 接收:从总线接收命令,并分析是地址还是数据。
3. 定时发送:从内存中取数并向主机发送.

经过调试,以上功能基本实现,可以通过上位机对单片机进行实时控制。

程序如下:

//这是一个单片机C51串口接收(中断)和发送例程,可以用来测试51单片机的中断接收
//和查询发送,发送没有必要用中断,因为程序的开销是一样的

#include <reg51.h>
#include<stdio.h>
#include <string.h>

#define INBUF_LEN 4 //数据长度
unsigned char inbuf1[INBUF_LEN];

unsigned char checksum,count3 , flag,temp,ch;

bit read_flag=0;
sbit cp=P1^1;
sbit DIR=P1^2;

int i;

unsigned int xdata *RAMDATA; /*定义RAM地址指针*/
unsigned char a[6] ={0x11,0x22,0x33,0x44,0x55,0x66} ;

void init_serialcomm(void)
{
SCON=0x50; //在11.0592MHz下,设置串行口波特率为9600,方式1,并允许接收
PCON=0x00;
ES=1;
TMOD=0x21; //定时器工作于方式2,自动装载方式
TH0=(65536-1000)%256;
TL0=(65536-1000)/256;
TL1=0xfd;
TH1=0xfd;
ET0=1;
TR0=1;
TR1=1;
// TI=0;
EA=1;
// TI=1;
RAMDATA=0x1F45;
}

void serial () interrupt 4 using 3
{
if(RI)
{ RI=0;
ch=SBUF;
TI=1; //置SBUF空
switch(ch)
{
case 0x01 :printf("A"); TI=0;break;
case 0x02 :printf("B"); TI=0;break;
case 0x03 :printf("C"); TI=0;break;
case 0x04 :printf("D"); TI=0;break;
default :printf("fg"); TI=0;break;
}
}
}

//向串口发送一个字符
void timer0() interrupt 1 using 3{
// char i;
flag++;
TH0=0x00;
TL0=0x00;
if(flag==10)
{// cp=!cp;
// for(i=0;i<6;i++)
P2=0x25;
TI=1;
temp=*RAMDATA;
printf("%c",temp);
TI=0;
// RAMDATA--;
flag=0;
}
}

//主程序
main()
{
init_serialcomm(); //初始化串口
//向6264中送数据
{
*RAMDATA=0x33;
}
while(1)

{
*RAMDATA=0x33;;
}
}

调试需要注意的问题:

1. 发送过程:在发送时必须保证TI=1:即发送缓冲器为空,否则将导致数据发不出去,如果想强制发送可以用:TI=1.具体发送数据:利用printf(“abcd”);函数直接发送即可。
2. 接收过程:在接收时多选用中断方式,这样可以节约CPU的时间,提高效率,

② 51单片机的结构组成

上图就是我们要研究学习的对象,51单片机摧部结构图了。大家看看上图,中间的一条双横线就是51单片机的内部总线了。其它的部件都是通过内部的总线与CPU相联接的,在第一节课时我们已跟大家讲述过,8051单片机是总线结构的。下面我们就51单片机内部的单个部件与大家进行讲解。
中央处理器(CPU):
刚跟大家讲过,需要提醒的是MCS-51的CPU能处理8位二进制数或代码。CPU是单片机的主要核心部件,在CPU里面包含了运算器、控制器以及若干寄存器等部件给成。
内部数据存储器(RAM):
MCS-51单片机芯片共有256个RAM单元,其中后128单元被专用寄存器占用(稍后我们详解),能作为寄存器供用户使用的只是前128单元,用于存放可读写的数据。因此通常所说的内部数据存储器就是指前128单元,简称内部RAM。地址范围为00H~FFH(256B)。是一个多用多功能数据存储器,有数据存储、通用工作寄存器、堆栈、位地址等空间。
内部程序存储器(ROM):
在前面也已讲过,MCS-51内部有4KB/8KB字节的ROM(51系列为4KB,51系列为8KB),用于存放程序、原始数据或表格。因此称之为程序存储器,简称内部RAM。地址范围为0000H~FFFFH(64KB)。
定时器/计数器
51系列共有2个16位的定时器/计数器(52系列共有3个16位的定时器/计数器),以实现定时或计数功能,并以其定时或计数结果对计算机进行控制。定时时靠内部分频时钟频率计数实现,做计数器时,对P3.4(T0)或P3.5(T1)端口的低电平脉冲计数。
并行I/O口
MCS-51共有4个8位的I/O口(P0、P1、P2、P3)以实现数据的输入输出。具体功能在后面章节中将会详细论述。
串行口
MCS-51有一个可编程的全双工的串行口,以实现单片机和其它设备之间的串行数据传送。该串行口功能较强,既可作为全双工异步通信收发器使用,也可作为移位器使用。RXD( P3.0)脚为接收端口,TXD(P3.1)脚为发送端口。
中断控制系统
MCS-51单片机的中断功能较强,以满足不同控制应用的需要。51系列有5个中断源(52系列有6个中断源),即外中断2个,定时中断2个,串行中断1个,全部中断分为高级和低级共二个优先级别,优先级别的设置我们也将在后面进行详细的讲解。
定时与控制部件
MCS-51单片机内部有一个高增益的反相放大器,基输入端为XTAL1输出端为XTAL2。MCS-51芯片的内部有时钟电路,但石英晶体和微调电容需外接。时钟电路为单片机产生时钟脉冲序列。

③ 52单片机和51单片机有那些区别

52比51多了一个定时器2,还有内部RAM大了一倍,其它相同,所以你不使用定时器2的话就跟使用51是一样的

记得采纳啊

④ 求大家解释51和52单片机的区别有哪些

51单片机和52单片机主要区别为:
1、51单片机内部有4K程序存储器,52单片机有8K。
2、51单片机有5个中断源,52单片机有6中断源。多一个定时器2.

⑤ 51单片机p0p1p2p3口,到底有啥区别啊,他们的基本功能有啥

51单片机p0、p1、p2、p3口区别如下:

一、意思不同

P0口作输出口用时,需加上拉电阻。P0口有复用功能。当对外部存储器进行读写操作时,P0口先是

提供外部存储器的低8位地址,供外部存储器地址锁存器锁存,然后充当数据线,用于写出或读入数

据。P1口、P2口只是普通IO口。

二、功能不同

P0口第一个功能是数据接口,第二个功能是地址低八位,P2口第二个功能是地址高八位。另外除了

P0口没有内部上拉电阻外,其他三个都有内部上拉电阻。

三、用法

信号输出和交互接口,编程可以确定不同的功能,例如连接液晶屏,作为控制信号输出输入等。

由于没有端口复用功能,所以,P0口的V1变成了一个上拉电阻。由于内部就有上拉电阻,所以,作

为GPIO时,P1口不需要接上拉电阻,当然,您接了也没关系啦,就相当于两个上拉电阻并联。

基本功能:

一、P1 就没多少功能,就是个准双向I/O口。

二、P0当准IO口使用,也就是既可以用作输出口,也可以用作输入口。

三、P3口除了是个准双向I/O口外。第二功能很重要P3.0 (RXD)串行数据接收端,P3.1 (TXD)

串行数据发送端,P3.2 (INT0)外部中断0输入,P3.3 (INT1)外部中断1输入;

P3.4(T0)Timer0计数器输入,P3.5(T1)Timer1计数器输入,P3.6(WR)写外部存储器的脉冲

输出,P3.7(RD)读外部存储器的脉冲输出。

(5)251单片机扩展阅读

1、P0口:真正的双向口,输出锁存,输入缓冲,输入前要先置1(KEIL包含的头文件已经有动作

了,如果用汇编,要人工置1),输出为漏极开路,输出一般都要上拉电阻。输入为高阻态,能驱动

8个TTL负载。当有片外存储器时,作数据线使用。 

2、P1口:最简单的口,输入也要先置1,无高阻态,只能是输出或者输入。能驱动4个TTL负载。 

3、P2口:I/O(输入/输出)与P1口一样,当有片外存储器时,作地址线使用,寻址64K片外数据存

储器。能驱动4个TTL负载。 

4、P3口:I/O(输入/输出)与P1口一样,但无论输入输出都要先置1。具有很多复用功能。

⑥ 51单片机跟52单片机有什么区别

1、种类不同:51系列单片机是指51内核,stc89c5X基本都是51内核的种类。

2、大小不同:最后一个数字表示E2prom的大小,E2prom=X*4K,c51就是4K,c52就是8k。

3、配件不同:52还多了一个定时器,所以可以说52是51(这个51是指stc89c51,不是51内核)的增强型。

如下图,可以很清晰的看出两者之间的差别:

(6)251单片机扩展阅读:

STC89c52单片机主要是基于8051内核,是新一代增强型单片机,指令代码完全兼容传统8051,速度快8~12倍,带ADC,4路PWM,双串口,有全球唯一ID号,加密性好,抗干扰强。

51单片机主要是基于8051内核,是新一代安全防逆向型单片机,指令代码完全兼容传统8051,速度快8~12倍,带有62 K FLASH ROM。

内置256字节RAM和集成外置1024字节RAM,白噪声密码-没有规律可循,每颗芯片都有自己的密码,同样的密码不可重用。

⑦ 51单片机最小系统原理图

我是一名单片机工程师,下面的讲解你参考一下.

.

51单片机共有40只引脚.下面这个就是最小系统原理图,就是靠这四个部分,这个单片机就可以运行起来了.(看下面的数字标记,1234)

.

这个脚是存储器使用选择脚,当这个脚接”地”时,那么就是告诉单片机,选择使用外部存储器,当这个脚接”5V”时,说明单片机使用内部存储器.

如果选择外部的存储器,太浪费单片机仅有的资源,所以这一脚永远接电源5V(如上图所示),使用单片机的内部存储器.

5 如果内部存储器不够容量,最多选择更高级的容量,就可以解决容量不够的问题了,就是这么简单

.

一天入门51单片机:点我学习

.

我是岁月哥,愿你学习愉快!

⑧ 用2个51单片机进行串行通信(12位并行数据该成串行后再改并行)

1、设12位的数据为D_12bit
2、在A机中先把D_12bit分装到两个8位的无符号变量经X和Y里,即X=D_12bit%256(低8位)Y=D_12bit/256(高8位),然后把两个字节往串口送即可(SBUF=X;SBUF=Y)
3、在B机中把从串口接收来的两字节数据赋给个16位的int型变量,很简单,假设接收来的低8位为X8位为Y:
unsigned
int
temp;
temp=256*y;//把Y变成16位并赋给temp的高8位
temp&=0xff00;//清空低8位
x=x*256;//X变成16位数据并赋给高8位
X>>=8;再把它移成低8位
temp=temp+X;//合并成16位数据

⑨ stc12c5a60s2 51单片机区别

stc12c5a60s2与51单片机区别:
1、同样晶振的情况下,stc12c5a60s2速度是普通51的8~12倍 对于AT89c51,1个机器周期=12个震荡周期,对于STC12C5A60S2,1个机器周期=1个震荡周期;
2、stc12c5a60s2有8路10位AD;
3、stc12c5a60s2多了两个定时器,带PWM功能;
4、stc12c5a60s2有SPI接口;
5、stc12c5a60s2有EEPROM;
6、stc12c5a60s2有1K内部扩展RAM;
7、stc12c5a60s2有WATCH_DOG;
8、stc12c5a60s2多一个串口;
9、stc12c5a60s2的IO口可以定义,有四种状态;
10、stc12c5a60s2中断优先级有四种状态可定义。

⑩ 51单片机和52机有什么区别

单片机简介

单片微型计算机简称单片机,简单来说就是集CPU(运算、控制)、RAM(数据存储-内存)、ROM(程序存储)、输入输出设备(串口、并口等)和中断系统处于同一芯片的器件,在我们自己的个人电脑中,CPU、RAM、ROM、I/O这些都是单独的芯片,然后这些芯片被安装在一个主板上,这样就构成了我们的PC主板,进而组装成电脑,而单片机只是将这所有的集中在了一个芯片上而已。

51单片机和STM32单片机

51单片机是对所有兼容Intel8031指令系统的单片机的统称,这一系列的单片机的始祖是Intel的8031单片机,后来随着flash ROM技术的发展,8031单片机取得了长足的进展成为了应用最广泛的8bit单片机之一,他的代表型号就是ATMEL公司的AT89系列。

STM32单片机则是ST(意法半导体)公司使用arm公司的cortex-M为核心生产的32bit系列的单片机,他的内部资源(寄存器和外设功能)较8051、AVR和PIC都要多的多,基本上接近于计算机的CPU了,适用于手机、路由器等等。

DSP、AVR和PIC单片机、8051单片机之间区别

AVR和PIC都是跟8051单片机的机构不同的8位单片机,因为结构不同,所以他的汇编指令也不同,并且他们都是使用的RISC指令集,只有几十条指令,大部分的还都是单周期的指令,所以在相同的晶振频率下,比8051速度要快。

DSP其实也是一种特殊的单片机,他从8bit到32bit的都有,他专门是用来计算数字信号的,在某些计算公式上,他甚至比现在的家用计算机的最快CPU还要快,比如说一个32bit的DSP能在一个指令周期内完成一个32bit数乘以32bit数再加上一个32bit数的计算。

8051、8031、89C51和89S51关系

我们平常老是讲8051,又有什么8031,现在又有89C51,89s51它们之间究竟是什么关系?

MCS51是指由美国INTEL公司生产的一系列单片机的总称,这一系列单片机包括了好些品种,如8031,8051,8751,8032,8052,8752等,其中8051是最早最典型的产品,该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS51系列单片机,而8031是前些年在我国最流行的单片机,所以很多场合会看到8031的名称。INTEL公司将MCS51的核心技术授权(卖)给了很多其它公司,所以有很多公司在做以8051为核心的单片机,当然,功能或多或少有些改变,以满足不同的需求,其中89C51就是这几年在我国非常流行的单片机。至于国内用到的很多的AT系列的单片机其实就是ATMEL公司在8031内核之外添加其他功能生产了系列的单片机

阅读全文

与251单片机相关的资料

热点内容
汇编程序员待遇 浏览:357
怎么批量有顺序的命名文件夹 浏览:209
杭州程序员健身 浏览:17
dvd光盘存储汉子算法 浏览:758
苹果邮件无法连接服务器地址 浏览:963
phpffmpeg转码 浏览:672
长沙好玩的解压项目 浏览:145
专属学情分析报告是什么app 浏览:564
php工程部署 浏览:833
android全屏透明 浏览:737
阿里云服务器已开通怎么办 浏览:803
光遇为什么登录时服务器已满 浏览:302
PDF分析 浏览:486
h3c光纤全工半全工设置命令 浏览:143
公司法pdf下载 浏览:383
linuxmarkdown 浏览:350
华为手机怎么多选文件夹 浏览:683
如何取消命令方块指令 浏览:350
风翼app为什么进不去了 浏览:779
im4java压缩图片 浏览:362