单片机一页纸

  • 格式:doc
  • 大小:110.00 KB
  • 文档页数:2

单片机:将微处理器、存储器、IO接口和相应的控制部件结成在一块芯片上形成的微型计算机。

第二章1.MCS-51系列单片机简介:8位CPU。

片内带128字节的数据存储器。

片内带4KB的程序存储(ROM)。

程序存储器的寻址空间为64KB。

片外数据存储器的寻址空间64KB。

128个用户位寻址空间。

累加器ACC(简称为A)为一个8位的寄存器,它是CPU中使用最频繁的寄存器。

2.程序存储器:对于内部有ROM的芯片,根据情况外部可以扩展ROM,但内部ROM和外部ROM共用64K存储空间。

8052内部有8KB的ROM3.数据存储器:对于51子系列:片内数据存储器有128字节,编址00H—7FH; SFR也占128个字节,编址80H—FFH;对于52子系列:片内数据存储器有256字节,编址为00H—FFH;SFR也有128字节,编址为80H—FFH;片内数据存储器按功能分成以下几个部分,工作寄存器组区,位寻址区,一般RAM区,特殊功能寄存器区;堆栈是先入后出、后入先出的原则进行管理的存储区。

4.MCS-51系列单片机的输入/输出接口:4个8位的并行I/O接口:P0、P1、P2、P3。

P0口是一个三态双向口,可作为地址/数据分时复用口,也可作为通用的I/O接口。

P1口是准双向口,它只能作通用I/O接口使用。

P2口也是准双向口,有两种用途:通用I/O接口和高8位地址线。

5.MCS-51系列单片机的外部引脚:ALE/PROG地址锁存信号输出端,在每个机器周期内输出两个脉冲。

PSEN:片外程序存储器读选通信号输出端,低电平有效。

RST/VPD(9脚):RST即为RESET可实现复位操作。

EA /VPP(31脚):片外程序存储器选用端。

该引脚低电平时,选用片外程序存储器;高电平时选用片内程序存储器。

6.片外总线:地址总线宽度为16位,寻址范围都为64KB。

由P0口经地址锁存器提供低8位(A7~A0),P2口提供高8位(A15~A8)而形成。

数据总线宽度为8位,由P0口直接提供。

控制总线由第二功能状态下的P3口和4根独立的控制线RST、EA、ALE和PSEN组成。

7.机器周期和指令周期机器周期:机器周期是单片机的基本操作周期,包含12个时钟周期。

指令周期:计算机取一条指令至执行完该指令需要的时间称为指令周期。

单片机的指令周期以机器周期为单位。

8.算术运算单元ALU是一个8位的运算器,程序计数器PC,用以存放要执行指令的地址从而实现从程序存储器中依次取出指令。

9.对于内部没有ROM的8032和8031芯片,工作是只能扩展外部ROM,最多可扩展64KB,地址范围是0000H-FFFFH第三章1.指令格式:[标号:] 操作码助记符[目的操作数][,源操作数] [;注释]。

2.寻址方式:寻找操作数或操作数地址的方法。

立即寻址:操作数是常数,使用时直接出现在指令中。

例如:MOV A,#20H寄存器数寻址:在汇编指令中,寄存器寻址在指令中直接提供寄存器的名称,如R0、R1、DPTR等。

例如: MOV A,R0直接寻址:指令中直接以地址数的形式提供存储器单元的地址。

例如:MOV A,20H 、MOV A,P0。

把片内数据存储器20H单元/P0口的内容送给累加器A。

寄存器间接寻址:存储单元地址存放在寄存器中。

例如:MOV A,@R1。

变址寻址:以数据指针寄存器DPTR或程序计数器PC为基址,累加器A为变址,两者相加得存储单元的地址。

例如:MOVC A,@A+DPTR。

3.指令系统1)片内数据存储器传送指令MOV指令格式:MOV 目的操作数,源操作数源操作数可以为A、Rn、@Ri、direct、#data;目的操作数可以为A、Rn、@Ri、direct; 不允许有: MOV Rn,Rn。

MOV@Ri,Rn例子:(1)将R0的内容送R6中程序为:MOV A,R0/MOV R6,A(2)将片外RAM 1000H单元的内容送片内20H单元中程序为:MOV DPTR,#1000HMOVX A,@DPTRMOV 20H,A(3)将ROM 2000H单元的内容送片内RAM的30H单元中程序为:MOV DPTR,#2000HMOV A,#00HMOVC A,@A+DPTRMOV 30H,A2)例:若R0的内容为30H,片内RAM 30H单元的内容为23H,累加器A的内容为45H。

则执行XCH A,@R0指令后;片内RAM 30H单元的内容为45H;累加器A中的内容为23H。

若执行SWAP A指令,则累加器A的内容为54H。

3)加法指令和减法指令:一般的加法指令ADD,带进位加法指令ADDC。

带借位减法指令SUBB目的操作数只能为A4)十进制调整指令:DA A,只能用在ADD或ADDC指令后面5)逻辑操作指令:1与指令ANL,2或指令ORL,3异或指令XRL,清零指令:CLR A6)循环移位指令:1累加器A循环左移RL A,2累加器A循环右移RR A,3带进位的循环左移RLC A,4带进位的循环右移RRC A7)控制转移指令:1长转移指令LJMP addr16。

2间接转移指令JMP @A+DPTR。

3累加器A判零条件转移指令:判0指令:JZ rel、判非0指令:JNZ rel。

4比较转移指令:CJNE A,#data,rel ;若A=data,不转移若A>data,则C=0,转移若A<data,则C=1,转移。

5减1不为零转移指令DJNZRn/direct,rel ;Rn/(direct)中的内容减1,再判断Rn/(direct)中的内容是否等于零;若不为零,则转移。

6以C条件的位转移指令JC rel ;若C=1,则转移,JNC rel ;若C=0,则转移例:1。

一位十六进制数转换成ASCII码。

ORG 0000H;LJMP MAIN;ORG 0030H;MAIN: MOV A, R2;CLR C;SUBB A,#0AH ; MOV A, R2;JC ADD30 ; ADDA, #07H ;ADD30: ADD A, #30H;MOV R2,A;SJMP $;END2.一位十六进制数转换8段式数码管显示码。

ORG 0200HCONVERT: MOV DPTR, #TAB /MOV A, R2 ;MOVC A, @A+DPTR ;/MOV R2, ARETTAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H7FH,67H,77H,7CH,39H,5EH,79H,71H;3.多字节无符号数加法ORG 0000H/LJMP MAIN/ORG 0030HMAIN:MOV R0, #30HMOV R1, #40H/MOV R2, #03HCLR C/LOOP: MOV A, @R0ADDC A, @R1/MOV @R0, AINC R0/INC R1/DJNZ R2, LOOPSJMP $/END第四章一.C51程序与标准C语言在库函数、数据类型、存储模式、输入/输出处理函数使用不同二.存储器类型data 直接寻址的片内RAM低128B,访问速度快bdata 片内RAM的可位寻址区(20H~2FH),允许字节和位混合访问idata 间接寻址访问的片内RAM,允许访问全部片内RAMpdata 用Ri间接访问的片外RAM的低256Bxdata 用DPTR间接访问的片外RAM,允许访问全部64K片外RAMcode 程序存储器ROM 64K空间例:用C语言编程完成外部RAM 000EH单元和000FH单元的内容交换。

包含absacc.h头文件作绝对地址访问。

应用举例#include<absacc.h>main(){unsigned char c;{c=XBYTE[14];XBYTE[14]=XBYTE[15];XBYTE[15]=c;}while (1);}将单片机内部30H~3FH单元写入初值00H~0FH将这些数从单片机内部传送到外部存储器0000H开始的存储单元中;再由外部存储器传送到单片机内部40H~4FH单元中。

#include <absacc.h>void main(){unsigned char i;for(i=0; i<=15; i++)DBYTE[0x30 + i] = i; // 初始化30H~3FH中的数据for(i=0; i<=15; i++)XBYTE[0x0000 + i] = DBYTE[0x30 + i];// 写入外部SRAM中,起始地址为0for(i=0; i<=15; i++)DBYTE[0x40 + i] = XBYTE[0x0000 +i];// 查看目标地址40H~4FH中的数据while(1);}第五章一.中断1.中断控制:EA:中断允许总控位;ET2:定时器/计数器T2的溢出中断允许位;ET1:定时器/计数器T1的溢出中断允许位;EX1:外部中断INT1的中断允许位;ET0:定时器/计数器T0的溢出中断允许位;EX0:外部中断INT0的中断允许位;在计算机中,由于计算机内外的原因,由于软件的原因,使cpu从当前正在执行的程序中暂停下来,自动的执行预先安排好的服务程序,执行完服务程序后,再返回被暂停的位置,继续执行原来的程序。

2.中断优先级:INT0,T0,INT1,T1,T2优先级有高到低3.中断响应过程(1) 根据中断请求源优先级高低,对相应优先级状态触发器置“1”。

(2) 保护断点,即把程序计数器PC的内容压入堆栈保存。

(3) 清内部硬件可清除的中断请求标志位。

(IE0、IE1、TF0、TF1)。

(4) 把被响应的中断服务程序入口地址送入PC,从而转入相应的中断服务程序执行4.中断服务程序的入口地址表串行口0023H定时/计数器1 001BH外部中断1 0013H定时/计数器0 000BH外部中断0 0003H例:通过外部中断1所接的轻触开关,循环点亮P0口跑马灯。

#include<reg52.h>unsigned char led;main(){IT1=1; //下降沿触发EX1=1; //开外部中断1EA=1; //开总中断while(1);}void int1_ser() interrupt 2{unsigned char i;unsigned int j;led=0x01;for(i=0;i<8;i++) // 控制灯轮流点亮{ P0 =~ led;for(j=5000;j>0;j--);led = led<<1;}}例5-4B 接在INT1引脚的按键按下,P1口灯闪烁。

#include <reg51.h>#define LED P1void delay(){unsigned int i;for(i=0;i<65000;i++) ;}void int1_ser() interrupt 2{LED = 0x00;delay();LED = 0xff;delay();}void main(){IT1=1; //负边沿触发EX1=1;EA=1;while(1);}二.定时器1.定时/计数器方式寄存器TMODGATE C/T M1 M0 GATE C/T M1 M0←定时器1 → 1←定时器0→M1 M0=01: 方式1,16位定时/计数器M1 M0=10: 方式2,8位自动重装定时/计数当C/T=1时工作于计数方式;当C/T=0时工作于定时方式;GATE=0TR1:定时/计数器T1的启动位,可由软件置位或清零;TR1=1时启动。