首页 » 互联网 » C51精简版教程(AT89C51/STC89C52)【含代码】_计数器_存放器

C51精简版教程(AT89C51/STC89C52)【含代码】_计数器_存放器

乖囧猫 2024-10-27 13:41:55 0

扫一扫用手机浏览

文章目录 [+]

二、引脚功能先容

IO口灌(流进)电流大,拉(流出)电流小。
P0:漏极开路的双向IO口,利用时,当电流流出需外加上拉电阻

C51精简版教程(AT89C51/STC89C52)【含代码】_计数器_存放器 互联网

外部地址数据总线,可带八个TTL负载

P1:准双向口(当作输入口用时,须将IO口置1(P1=0XFF;),可带四个TTL负载

P1. 0

T2定时计数器2的外部脉冲输入及时钟输出

P1.1

T2EX定时计数器2的捕捉、自动重装的触发输入及减法计数掌握

P1.5:

MOSI,主动输出从动输入引脚,用于flash(闪存)编程

P1.6:

MISO, 主动输入从动输出引脚,用于flash编程

P1.7:

SCK, 同步时钟,用于flash编程 ISP编程时用

P2:准双向口,可带四个TTL负载

外部地址总线高八位

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,外部数据存储器的读选能旗子暗记

其他非IO口

VCC:

电源正极,事情电压范围:4.0v-5.5v。

GND

RST

复位端,高电平有效

XTAL1

(clock in)

XTAL2

(clock out )时钟引脚,外接晶振和谐振电容(5-47PF),晶振的谐振频率范围:0hz–33Mhz,用作工控产品时不超过6MHZ。
常用晶振型号: 4MHZ,6MHZ,8MHZ,16MHZ,12MHZ,24MHZ,5.5296MHZ,11.0592MHZ,22.1184MHZ,33.1776 MHZ

EA/Vpp

外部程序存储器的选通信号/编程电压输入 EA=0:利用外部程序存储器 EA=1:先利用内部程序存储器,后利用外部程序存储器

ALE/PROG:

外部低八位地址总线锁存旗子暗记/编程脉冲输入,Fosc/6

PSEN:

外部程序存储器的读选通信号

三、最小系统事情电路

四、ISP下载线干系针脚:(一)针对AT89C51:

单片机引脚|40 | 20 | 9 | 6| 7 | 8 ||–|–|–| – |–|–|–| – |–|–|–|| | VCC| GND | RST | MOSI | MISO | SCK || Usbasp引脚 | 1| 2 | 3 | 4 | 5 | 6|

(二)针对STC89C52:

| 单片机引脚 | 40 | 20 | 10 | 11||–|–|–| – |–|–|| | VCC | GND| RXD| TXD|| Usb->TTL引脚 | 1 | 2 | 3 | 4 |

第二章:51的存储器构造(89s52或90C52RC为例)

一、程序存储器(ROM)只读不写 code (0x0000-0xffff) 共有8k,紧张放写的程序代码。

1、类型:FLASH(闪存) ISP code 区所写的程序的容量不能超过8192个字节。

2、浸染:存放程序代码

3、容量:8KB=81024字节=8192bit=2^13bit

4、地址编码:16位二进制编码

0000 1111 1111 1111 0~0FFFH 4095 89s51 0001 1111 1111 1111 0~1FFFH 8191 89s52

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、类型:静态数据存储器 (数据总线8根)

2、浸染:存放临时数据 idata间接寻址,一样平常省略不写

3、容量:256字节=2^8 0X00~0Xff

4、地址编码:八位二制表示0000 0000 ~ 1111 1111 0~0ffh (S52)

mov 30H,#05H;把0x05写入地址为30H的存储器 mov 7fh,#01h

5、功能分区

1)00h-1fh,事情寄存器区(32个)

00H R0

08H R0

10H R0

18H R0

01H R1

09H R1

11H R1

19H R1

02H R3

0AH R3

12H R3

1AH R3

07H R7

0FH R7

17H R7

1FH R7

干系汇编操作

RS1=0

CLR RS1

RS1=0

CLR RS0

RS1=1

CLR RS1

RS0=0

SETB RS0

选择当前寄存器组

using 0

选择当前寄存器组0

2)20H-2FH,位寻址区 bdata

168位=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

3)30H-7FH,用户RAM区,缓冲区或是堆栈区(RAM 07h)

4)80-ffh,高128单元,只能间接寻址

6、51变量的存贮类型与其数据存储器的关系内部RAM 00h-7fh data (直接寻址)unsigned char data i=3;

内部RAM

20h-2fh

bdata(位寻址)

内部RAM

00h-ffh

idata(间接寻址)

外部RAM

00H-ffh

pdata ( MOVX A,@R0 MOV @R0,A)

外部RAM

0000H-ffffh

xdata ( MOVX A,@DPTR)

三、51分外功能寄存器(SFR)

P0

(80H)

P1

(90H)

P2

(A0H)

P3

(B0H)

ACC

(E0H)

B

(F0H)

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、P1、P2、P3、ACC、B、PSW、IE、IP、TCON、、SCON、

ACC累加器浸染:运算 数据传送 数据转换

干系操作

ADD ACC,#10

累加器ACC=ACC+10

ACC=246+10

ACC=246+10

MOV P1,A

把ACC载入到P1中

MOVC A,@A+DPTR

查表,DPTR是首地址

B 寄存器浸染:乘除法运算

MUL AB

乘法

DIV AB

除法

SP: 堆栈指针浸染:存放栈顶,保护临时数据,

DPTR:(dph+dpl)数据指针浸染:数据传送 数据转换

PSW 程序状态字

CY

AC

F0

RS1

RS0

OV

-

P

7

6

5

4

3

2

1

0

|CY|进位标志位 ||–|–|–|| AC| 赞助进位标志位, 加法运算时,低四位向高四位有进位为1F0| 用户标志位RS1 RS0 | 当前寄存器组选择位OV| 溢出标志位 OV=CYC67=10=1P| 寄偶校验位 (偶校验,由ACC中1的个数决定的,若为寄数个1,则P=1,反之为0)

PC:程序指针(0000H)浸染:存放即将实行指令的首地址(ROM)

四、51的时序

振荡频率:

Fosc

振荡(时钟)周期

T=1s/Fosc (12M晶振便是1/12M)

机器周期

Tfr(Tcyc)=12s/Fosc (12M晶振为1us)

指令周期

根据指令不同,1个机器周期~4个机器周期

五、51的事情办法连续运行单步运行空闲办法:CPU停滞事情,就寝办法掉电保护办法:RAM事情编程办法:校验办法:复位办法:P0 P1 P2 P3 全为高电平SP=07H别的大都00H pc=0000h

第三章: C51的语法根本

1、数据类型(1)基本类型 0000 0001 +1

无符号字符型(unsigned char)

0~255

有符号字符型(char) (1个字节)

-128~+127

无符号字符型(unsigned char ) (1个字节)

0-255

有符号整型(int) (4个字节)

-32768~+32767

无符号整型(unsigned int) (4个字节)

0~65535

位类型(1位)

(bit)

有符号长整型(long (int))(8个字节)

-2^31~+ 2^31-1

无符号长整型(unsigned long int)(8个字节)

0~2^32-1

单精度实型(float)(4个字节)

~

双精度实型(double)(8个字节)

~

(2)布局类型

数组类型

(array)

构造体

(struct)

共用体

(union)

列举类型

(enum)

(3)指针类型 ( ) 24位(3个字节)

(4)空类型(void)

2、常量固定不变的量,称为常量,常日用大写字符串表示常量的定义:

#define 常量名 常数表达数#define SHANGXIAN 242#define uc unsigned char#define ui unsigned int

3、变量变量的定义:数据类型 <存贮类型> 变量名;

unsigned int data i;unsigned char xdata j;

变量的存贮类型有时可以省略,即为系统默认类型全局变量、局部变量

4、C51的存贮类型

data

内部RAM区0x00~0x7f单元,128字节;ram

xdata

外部RAM区0x0000~0xffff单元,64K

code

ROM区0x0000~0xffff单元,64K 0x0000-0x1fff,flash

idata

内部RAM区0x00~0xff单元,256字节

bdata

内部RAM区0x20~0x2f单元,16字节许可位寻址

pdata

外部RAM区当P2口固定0x00~0xff单元,分页256字节

5、C51中分外功能寄存器(SFR)的定义

格式:

sfr 分外功能寄存器名称=分外功能寄存器地址;

sfr IE=0XA8; //定义寄存器IE地址为0XA8

sfr16 分外功能寄存器名=低八位分外功能寄存器地址;sfr16 TMR0=0XCC; T2则为16位,包括TH2及TL2注:必须是高八位与低八位寄存器地址连续才能用sfr16定义

6、C51中并行I0口的定义(1)CPU自带并口P0、P1、P2、P3,用sfr定义

P0:0x80 P1:0x90 P2:0xA0 P3:0xB0sfr P0=0x80;

注:<reg52.h>中已定义

(2)外扩并口#include <absacc.h>#define IO口名称 XBYTE [IO口地址]

#include <absacc.h> #define PA8255 XBYTE [0X7C00] #define PB8255 XBYTE [0X7D00]

7、C51中分外功能位及位变量的定义(1)分外功能位的定义sbit 位名称=位地址;在分外功能寄存器中,地址以“0”或是“8”结尾的SFR才能定义分外功能位

IE (0XA8) EA X ET2 ES ET1 EX1 ET0 EX0

sbit EA=IE^7; sbit EX0=IE^0; sbit EX0=0XA8^0; sbit EX0=0XA8; sbit EA=0XAF; sbit EX1=0xAA; sbit EX1=IE^2; sbit EX1=0XA8^2; sbit led=P1^0; sbit bee=P1^7;

(2)位变量的定义bit 变量名;bit statues; statues=0;(3)在字节变量中定义位变量#define uchar unsigned charuchar bdata kk;

第四章:IO口输入输出事理

一、51单片机IO口事情事理(一)、IO口事理图1、P0口

2、P1口

2、P2口

3、P3口

第五章: 内部资源之外部中断

中断类型

中断入口地址

中断序号

外部中断0(INT0)P3.2

0003H

0

外部中断1(INT1)P3.3

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 IP TCON

IE 中断许可掌握寄存器

|EA| – |ET2 |ES |ET1| EX1| ET0 |EX0 ||–|–|–|–|–|–|–|–|–|–|7|6|5|4|3|2|1|0|

EA

中断总许可掌握位

ET2

定时中断2许可掌握位

ES

串行中断掌握位

ET1

定时中断1许可掌握位

ET0

定时中断0许可掌握位

EX0

外部中断0许可掌握位

EX1

外部中断1许可掌握位

当中断掌握位为0时禁止中断,为1是许可中断

IP 中断优先级掌握寄存器

PT2

PS

PT1

PX1

PT0

PX0

7

6

5

4

3

2

1

0

PX0

外部中断0优先级掌握位

PX1

外部中断1优先级掌握位

PT0

定时中断0优先级掌握位

PT1

定时中断1优先级掌握位

PT2

定时中断2优先级掌握位

PS

串行中断优先级掌握位

优先级掌握位为0时表示中断优先级为低,

为1时表示中断优先级为高,

中断优先级高的中断源可再次中断中断优先级低的中断源

同级间不能发生再次中断

TCON 定时计数器掌握寄存器

TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0

7

6

5

4

3

2

1

0

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外围模块的利用方法:

<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=212Tosc,

旗子暗记的频率:f(1/f)>=(24/fosc) >> f<=fosc/24

(2)干系掌握字:TMOD TCON IE IPTH0 TL0 TH1 TL1

计数器TH0 TL0 TH1 TL1用于存计数值,若TR0(TR1)=1,如果有脉冲旗子暗记 则自动加1

TH0

定时计数器0的高8位 65536 取高八位则X/2^8(256)

TL0

定时计数器0的低8位 取低八位则X%2^8(256)

TH1

定时计数器1的高8位

TL1

定时计数器1的低8位

TCON 定时计数器掌握寄存器

TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0

7

6

5

4

3

2

1

0

TR0

定时计数器0的启动掌握位,当TR0=1,许可计数,TR0=0时,停滞计数

TR1

定时计数器1的启动掌握位,当TR1=1,许可计数,TR1=0时,停滞计数 65535

TF0

定时计数器0的溢出标志位 ,当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)。

IE1

外部中断1

IT1

触发办法 1低落沿 0上起落低沿

IE0

外部中断0

IT0

触发办法 1低落沿 0上起落低沿

TMOD

定时计数器的事情办法选择掌握寄存器

GATE| C/T| M1| M0| GATE| C/T| M1| M0|–|–|–|–|–|–|–|–|–|–|–|7|6|5|4|3|2|1|0|

GATE

门控位, 当GATE=0,T0(T1)与外部中断脚INT0(INT1)无关;当GATE=1时,必须INT0(INT1)=1时定时计数器T0(T1)才能事情

C/T

定时办法与计数办法选择位,C/T=0时,定时办法,计数器的事情脉冲来自内部时钟旗子暗记,为Fosc/12(即十二个振荡脉冲向定时供应一个事情脉冲,即每个机器周期自动加1), C/T=1时,计数办法,计数器的事情脉冲来自外部时钟旗子暗记(P3.4或是P3.5),有脉冲时自动加1)

M1M0

定时计数器的事情办法选择位

M0 M1选择4种事情模式

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只能定时123456789101112

设置TR0 TL0 TF0 EA ET0 进中断1 T0设置TR1 TH0 TF1 EA ET1 进中断 3 T1

T1为波特率发生器时,不能用于定时或是计数t=P(2^n-x)Tfr t:为定时韶光, x:为TH0与TL0中的初值 Tfr:机期周期 n:为计数器的长度,与事情办法有关。
机器周期:Tfr=121s/Fosc FOSC=24MTfr=121s/(1210)=0.510s=1us=10^-6s 定时韶光:t=pluseTfr t=5ms 脉冲数:pluse=t/Tfr pluse=1ms/1us=1000 定时数初值:x=2-pluse n:表示定时计数器的长度, 由事情办法决定 x=2-1000=64536 T=0.707(R1+R2)C+0.707R2C F=1/T 483 =1/(0.707(R1+R2)C+0.707R2C)>>C=1000 000 /(zi0.7073) nft=(2^n-初值)Tfr 1000=2^n-x x=2^13-1000=8192-1000=7192f=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

串行发送

波特率:串行通畅的速率,BIT/S数据帧:起始位 8个数据位(D0-D7)D8(奇偶校验位) 停滞位 起始位:低电平数据位:高电平表示数据1,低电平表示数据0;低位在前,高位在后奇偶校验位:MCS-51默认为偶校验,常常用作数据第九位奇校验=D0⊕D1⊕D2⊕D3⊕D4⊕D5⊕D6⊕D7⊕1偶校验=D0⊕D1⊕D2⊕D3⊕D4⊕D5⊕D6⊕D7⊕0停滞位:高电平点对点通信模式:单工模式 半双工模式 全双工模式

(2)干系掌握字SCON SBUF IE IP PCON TH1 TL1 TCON TMOD T2CON RCAP2H RCAP2L TH2 TL2

SCON

串行掌握寄存器

SM0

SM1

SM2

REN

TB8

RB8

TI

RI

7

6

5

4

3

2

1

0

SM0 SM1 :串行事情办法选择位 0 0 办法0,同步移位寄存器办法 0 1 办法1,10位UART 1 0 办法2,11位UART(波特率不可调) DMAX512 250K 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=0xaa; 收:data1=SBUF; MOV A,SBUF

PCON

电源管理寄存器

|SMOD | X | X | X | GF1 |GF0 | PD | ID ||-- |-- |-- |-- |-- |-- |-- |-- |–7|6|5|4|3|2|1|0|

SMOD 波特率倍增位 0 波特率不倍增 1 波特率倍增GF1 GF0 用户标志位PD 掉电保护模式掌握位 RAM保存数据,其它部件停上事情, 只能复位激活ID 空闲模式掌握位,CPU不事情, 别的外围模块正常,可用中断激活123456789

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 ,22.1184,5.5296 9600=28800/(256-X)X为T1事情在定时mode 2 下TH1中的初值 数据帧格式:10位, 起始位 8位数据位 停滞位 3、办法2 11位通用异步串行通信模式 DMAX512 特点:波特率=2SMOD Fosc/64; 数据帧格式:11位, 起始位 8位数据位 奇偶校验位 (TB8或是RB8) 停滞位 4、办法3 11位通用异步串行通信模式特点: 波特率=(2SMOD /32)Fosc/(12(256-x)), X为T1事情在mode 2 下TH1中的初值 数据帧格式:11位, 起始位 8位数据位 奇偶校验位 (TB8或是RB8) 停滞位

(4)串口用法:1、设相同事情办法2、设相同波特率3、制订通信协议

完全代码资料可进群免费领取!


嵌入式物联网的学习之路非常漫长,不少人由于学习路线不对或者学习内容不足专业而错失落高薪offer。
不过别担心,我为大家整理了一份150多G的学习资源,基本上涵盖了嵌入式物联网学习的所有内容。
点击下方链接,0元领取学习资源,让你的学习之路更加顺畅!
记得点赞、关注、收藏、转发哦!

点击这里找小助理0元领取:扫码进群领资料

标签:

相关文章

源代码的更新,技术革新的动力源泉

在信息技术飞速发展的今天,源代码的更新已成为推动技术革新的重要动力源泉。从互联网的诞生到人工智能的崛起,源代码的更新始终伴随着技术...

互联网 2025-01-06 阅读0 评论0

火狐源代码,解码浏览器发展的里程碑

随着互联网技术的飞速发展,浏览器已经成为我们日常生活中不可或缺的组成部分。在我国,火狐浏览器凭借其卓越的性能和独特的用户体验,赢得...

互联网 2025-01-06 阅读0 评论0

火山手机协议,引领移动通信新时代的基石

随着科技的飞速发展,移动通信技术日新月异,手机已成为人们日常生活中不可或缺的伙伴。在众多手机品牌中,火山手机凭借其独特的火山手机协...

互联网 2025-01-06 阅读0 评论0

冯矿伟:芯片的价值主线_芯片_传感器

芯片的代价剖析,我已经赘述过很多次了,学员区板块藏宝图里,芯片+传感器的组合,很多同学受益,公开博客里虽然没有公布板块藏宝图(望理...

互联网 2025-01-06 阅读0 评论0