51单片机的一些知识点

1、单片机芯片型号:STC 89C51RC 40C—PDIP 0707

STC——STC公司,其他前缀还有AT、Winbond等

8——基于8051内核芯片

9——表示内部含有Flash E2PROM存储器

C——表示该器件为CMOS产品

5——固定不变

1——代表芯片内部存储空间,1为4KB,2为8KB,3为12KB

RC——STC单片机内部RAM(随机读写存储器)为512B,还有RD+表示内部RAM为1280B

40——表示外部晶振最高可接入40MHz,对于AT单片机数值一般在24MHz

C——产品等级,商业级(I:工业级、A:汽车用产品、M:军用级)

PDIP——封装型号,PDIP是双列直插式

0707——07年第7周

2、51单片机的P口

有四类,分别是P0、P1、P2、P3口。

P0口:双向8位三态I/O口,由于P0口内部没有上拉电阻,为高阻状态,所以不能正常的输出高低电平,所以该组I/O在使用时要外接上拉电阻,一般接入10KΩ的上拉电阻;

P1口、P2口、P3口:准双向I/O,内带上拉电阻,这种接口输出没有高阻状态,输入也不能锁存,故不是真正的双向I/O口。该口在作为输入使用前,要先向该口进行写1操作,然后单片机内部才可以正确读出外部信号,也就是要使其先有个“准备”的过程。

3、TTL、CMOS电平标准

TTL电平临界值:

(1)VOHmin = 2.4V,VOLmax = 0.4V

(2)VIHmin = 2.0V,VILmax = 0.8V

CMOS电平临界值:

(1)VOHmin = 4.99V,VOLmax = 0.01V

(2)VIHmin = 3.5V,VILmax = 1.5V

CMOS电路中不使用的输入端不能悬空,否则会造成逻辑混乱。另外,CMOS集成电路的电源电压可以在较大范围内变化,因而对电源的要求不像TTL集成电路那样严格。

CMOS电平能驱动TTL电平,但TTL电平不能驱动CMOS电平,需要加上拉电阻。

4、sfr、sfr16、sbit说明

sfr——-声明一个8位寄存器,如:sfr SCON = 0x98;SCON是单片机的串口控制寄存器,这个寄存器在单片机内存中的地址是0x98。这样声明后,以后直接对SCON操作相当于对0x98地址处的寄存器进行操作。

sfr16——16位特殊功能寄存器声明,如:sfr16 T2 = 0xCC;声明了T2寄存器,它的起始地址是0xCC。(T2是个定时器寄存器)

sbit——定义内部寄存器的某一位(也要该寄存器可以进行位操作),如:sbit TI = SCON^1; SCON是一个8位寄存器,SCON^1是这个8位寄存器的次低位。

5、C51中常用的头文件

reg51.h、reg52.h、math.h、ctype.h、stdio.h、stdlib.h、absacc.h、intrins.h

一般写成:#include<reg52.h>

6、单片机的几个周期介绍

(1)时钟周期:顾名思义,就是晶振频率的倒数;

(2)状态周期:时钟周期的两倍;

(3)机器周期:12个时钟周期;

(4)指令周期:CPU执行一条指令需要的时间,一般是1~4个机器周期。

7、关于中断

52单片机的中断源有6个,以下1~6也按照中断的优先级进行了排列,(1)最高(6)最低

(1)INT0——外部中断0,由P3.2口引入

(2)INT1——外部中断1,由P3.3口引入

(3)T0——定时器/计数器0中断

(4)T1——定时器/计数器1中断

(5)TI/RI——串行口中断

(6)T2——定时器/计数器2中断

中断控制的相关寄存器

(1)中断允许寄存器IE

(2)中断优先级寄存器IP

(3)定时器/计数器工作方式寄存器TMOD

(4)定时器/计数器控制寄存器TCON

以上4个寄存器的相应bit位可以设置中断的方式及功能等,实际用起来没这么麻烦,举例如下:

// 中断举例
void main()
{
    TMOD  = 0x01;       // 设置定时器0的工作方式1(M1M0为01)
    TH0 = (65536-45872)/256;    //装入初值,定时50ms,晶振11.0592MHz
    TL0 = (65536-45872)%256;
    EA = 1;    // 开总开关
    ET0 = 1;  // 开定时器0中断
    TR0 = 1;  // 启动定时器0
    while(1); // 程序停在这里等待中断发生
}

void T0_time() interrupt 1
{
    TH0 = (65536-45872)/256;    //重装初值
    TL0 = (65536-45872)%256;
    num++;                // num自加
    if(num==20)        // 如果到了20次,说明1s到了
    {
        num = 0;         // num清零
        led1 = ~led1;
    }
}

中断初值的计算

假设单片机的时钟频率是12MHz,而机器周期是12个时钟周期,此时一个机器周期的时间就是1us。计满TH0和TL0需要216-1 = 65535,当计数到65535时,计数器在下一个脉冲将会溢出,随即向CPU申请中断。因此溢出一次共需要65536us。假设我们现在要计数50ms的话,则需要先填入一个初值,在这个初值的基础上再计数50000次计数器刚好溢出产生中断请求。这就是初值的来由。

具体放入初值的方式如下:

THx = (65536-N)/256     TLx = (65536-N)%256

8、取出相应位的C语言写法

/*

两位数取出十位、个位

三位数取出百位、十位、个位

四位数取出百位、十位、个位

*/

// num是相应数

//两位数

shi = num/10;

ge = num % 10;

// 三位数

bai = num/100;

shi = num%100/10;

ge = num%10;

// 四位数

qian = num/1000;

bai = num/100%10;

shi = num/10%10;

ge = num%10;

9、_nop_();

它相当于一个机器周期,要用这个功能,要带上头文件#include<intrins.h>

时间: 2024-08-24 21:15:51

51单片机的一些知识点的相关文章

51单片机之串口通信(三)

51单片机之串口通信(三) 已有 47 次阅读2015-12-29 00:21 |个人分类:51单片机| 单片机, 通信 用串口实现发送和接收同时可操作: 电脑显示结果如图: 源程序: /*项目名称:串口发送接收实验项目内容:串口发送接收同时进行,计算机发送数据给单片机控制P0口,从而控制LED灯的亮灭,单片机发送数据到计算机,计算机显示出来时间:2015年12月23日项目负责人:YUAN*/#include <reg52.h>typedef unsigned char uChar8;type

51单片机中断机制(定时器/计数器)

单片机中断简介 52单片机一共有6个中断源,它们的符号,名称以及各产生的条件分别如下: INT0 - 外部中断0,由P3.2端口线引入,低电平或下降沿引起 INT1 - 外部中断1,由P3.3端口线引入,低电平或下降沿引起 T0    - 定时器/计数器0中断, 由T0计数器计满回零引起 T1    - 定时器/计数器1中断, 由T1计数器计满回零引起 T2    - 定时器/计数器2中断, 由T2计数器计满回零引起 TI/RI - 串行口中断,串行端口完成一帧字符发送/接收后引起 其中T2是5

51单片机课程设计:基于DS18B20的温度报警器

51单片机课程设计:基于DS18B20的温度报警器 本程序用于读取DS18B20温度,同时具备报警功能,工程分为3个文件,main.c.temp.c.temp.h,经本人修改部分代码,适用于吉林农业大学51开发板,其他朋友亦可移植到其他型号开发板.工程文件在文章最下方. 1.main.c文件 /*********************************说明****************************************** 本程序用于读取温度检测模块DS18B20数值,并

51单片机课程设计:基于MQ-3的酒精浓度报警器

51单片机课程设计:基于MQ-3的酒精浓度报警器 本程序用于将MQ-3上读取到的模拟信号转换为对应的数字信号,经51单片机处理后,在数码管显示,同时具有报警功能,当检测值高于预警值,蜂鸣器报警.除了可以检测MQ-3酒精浓度模块的AD值,也适用于MQ系列的其他模块,原理基本都相同,都是将读取到的AD值转换为数字信号,程序修改后,如果接线方法正确,可以在吉林农业大学51开发板上完美运行,相关工程文件见最下方附件. /*************************************说明***

51单片机特别功用存放器和位界说

接下来的几节,我们会带着人人编写第一个单片机程序.在此之前,我们先来理解一些 51 单片机特有的程序语法以及 Keil 软件的根本操作步调,请人人必定要有耐烦.我们次要是用 C 言语来对单片机编程,而有的单片机有那么几条很特别的独有的编程语句,51 单片机就有,先引见 2 条.第一条语句是:sfr  P0 = 0x80;sfr 这个症结字,是 51 单片机特有的,他的感化是界说一个单片机特别功用存放器(special function register).51 单片机外部有许多个小模块,每一个模

工业自控 西门子S7-200PLC教程 51单片机视频教程 Proteus视频教程 Protel DXP 教程

热门推荐电脑办公计算机基础知识教程 Excel2010基础教程 Word2010基础教程 PPT2010基础教程 五笔打字视频教程 Excel函数应用教程 Excel VBA基础教程 WPS2013表格教程 更多>平面设计PhotoshopCS5教程 CorelDRAW X5视频教程 Photoshop商业修图教程 Illustrator CS6视频教程 更多>室内设计3Dsmax2012教程 效果图实例提高教程 室内设计实战教程 欧式效果图制作实例教程 AutoCAD2014室内设计 Aut

Windows 通用应用尝试开发 “51单片机汇编”总结

一.前言 终于完成windows通用应用“51单片机汇编”,半年前开始玩WindowsPhone开发的第一个真正意义上的App(还很多缺点=_=).开发从1月中旬考完试到今天,期间实习了半个月,玩了几天,算起来基本弄了3个多星期吧.不多说,总结总结. 二.开发数据准备 应用中主要的数据是单片机的汇编指令,我主要用XML文件来储存数据,没有使用SQLLite数据库,数据格式如下图: xml文件的数据是我手输入的,所以这是比较烦的.(可能有更简洁的办法获取数据). 而xml文件每个每个节点对应实例,

[51单片机] SPI nRF24L01无线 [可以放在2个单片机里实现通信]

main.c 1 #include<reg51.h> 2 #include"2401.h" 3 4 #define uint unsigned int 5 #define uchar unsigned char 6 7 sbit KEY8=P3^7; //发送按键 8 sbit beep=P2^3;//喇叭 9 sbit LED6=P1^6; ////接收到数据后的功能实现灯 10 11 void delay_ms(uint z) //延时函数 12 { 13 uint x

51单片机GPIO口模拟串口通信

51单片机GPIO口模拟串口通信 标签: bytetimer终端存储 2011-08-03 11:06 6387人阅读 评论(2) 收藏 举报 本文章已收录于: 分类: 深入C语言(20) 作者同类文章X 1 #include "reg52.h" 2 #include "intrins.h" 3 #include "math.h" 4 #include "stdio.h" 5 sbit BT_SND =P1^5; 6 sbit