51单片机在片设备与中断(1)

发布者:Huayu8888最新更新时间:2015-10-12 来源: eefocus关键字:51单片机  在片设备  中断 手机看文章 扫描二维码
随时随地手机看文章
并行端口要点
  1. MCS-51单片机内部有4个8位的并行I/O口P0、P1、P2、P3。其中P3口、P2口、P1口为准双向口,P0口为双向的三态数据线口。各端口均由端口锁存器、输出驱动器、输入缓冲器等构成。各端口除可进行字节的输入/输出外,每个位口线还可单独用作输入/输出,实际应用非常方便。
  2. 对并行I/O口的“读—修改—写”类指令(例如 CPL P0.0、ANL P1,#0FH等)实际是读出对应的端口锁存器的内容,执行修改后再写回到端口锁存器中。之所以是“读锁存器”而不是“读引脚”,是为了避免因引脚外部电路的原因而使引脚的状态发生改变而造成误读。
  3. P0口是一个三态双向I/O口,在需要进行外部ROM、RAM等扩展时,采用分时复用的方式,通过地址锁存器后作为地址总线的低8位和8位数据总线;在不需要进行外部ROM、RAM等扩展时,作为通用的I/O口使用。P0在用作通用输出口时必须外接上拉电阻,用作输入口时,则必须先把锁存器写入1。P0口的输出级具有驱动8个LSTTL负载的能力。

  4. 当不需要在单片机芯片外部扩展程序存储器,只需扩展256字节的片外RAM时,访问片外RAM就可以利用“MOVX A,@Ri”,“MOVX @Ri,A”类指令来实现。这时只用到了地址线的低8位,P2口不受该类指令的影响,仍可以作为通用I/O口使用。

  5. P3口相应的端口线处于第二功能,应满足的条件是:

       串行I/O口处于运行状态(RXD,TXD)。

       外部中断已经打开(INT0、INT1)。

       定时/计数器处于外部计数状态(T0、T1)。

       执行读/写外部RAM的指令(RD、WR)。  

 

定时/计数器4种工作方式的特点

  1. 方式0是13位计数器,最大计数值213=8192,计数范围比方式1小,计算定时初值比较麻烦,容易出错,与方式1比较无任何优点(设计初衷是为了兼容更早的48系列单片机)。
  2. 方式1是16位计数器,最大计数值为216=65536,计数范围大,适用于定时范围较大的应用场合。
  3. 方式2是8位计数器,最大计数值是28=256,缺点是计数范围小,优点是定时初值可自动恢复,适用于需要重复定时,而定时范围还不大的应用场合。
  4. 方式3是8位计数器,仅适用于T0,T1无方式3。T0方式3时,被拆成两个独立的8位计数器TH0、TL0:TL0使用T0原有的控制寄存器组成一个8位的定时/计数器;TH0借用T1的TF1、TR1,只能对机内机器周期脉冲计数,组成另一个8位定时器。T0方式3时T1方式2作串行口波特率发生器。

定时器初值的计算

定时时间的计算公式为:

    T=(M-TC)×T0   (或TC=M-T/T0 )

          其中 T :定时器的定时时间,即设计任务要求的定时时间;

               T0:计数器计数脉冲的周期,即单片机系统主频周期的12倍;

               M :计数器在相应工作方式下的计数模值;

               TC:定时器需要预置的初值。

若设初值TC=0,则定时器定时时间为最大。当单片机系统主频为12MHz时,各种工作方式下定时器的最大定时时间为:

    工作方式0   :   Tmax=2^13×1us=8.192ms

    工作方式1   :   Tmax=2^16×1us=65.536ms

    工作方式2和3:   Tmax=2^8×1us=0.256ms

关键字:51单片机  在片设备  中断 引用地址:51单片机在片设备与中断(1)

上一篇:51单片机在片设备与中断(2)
下一篇:51指令系统(1)

推荐阅读最新更新时间:2024-03-16 14:35

Proteus使用笔记之51单片机4x4矩阵按键
采用反转法判断按键坐标,即行号与列号获得按键码。 写完后发现Proteus一个问题:直接使用这样的if(P1&0xf0!=0xf0)语句时,调不出来,当用了一个中间变量过渡时,就调出来了,害我花了一个上午的时间,现在暂时不知道Proteus为什么要这样,实际中是不需要的。 程序如下: #include reg52.h #define uchar unsigned char #define uint unsigned int void delayMS(unsigned int z); uchar keyscan(void); void main(void) { uchar key; while(1) {
[单片机]
基于51单片机的贪吃蛇游戏
前言: 这篇文章是我当时制作完成后写的总结,已经过去了一段时间,苦于找不到实物的图片,就把全文都粘贴到了下面。 今天是11月2日,昨天我完成了我的贪吃蛇的制作。那个战线一个多月,让我煞费苦心的工作。在这一过程中,学到了许多新知识,也认识了许多新朋友,无论星火杯结果如何,它都将成为我的大学生涯,甚至一生中宝贵的财富。所以我决定将我学到的,想到的都写下来,给将来的自己一份美好的回忆。这次总结的内容主要是进入西电来学到的一些硬件知识,主要包括51单片机基础知识(最小系统、LED流水灯、蜂鸣器、独立按键、数码管显示),Protues仿真(以贪吃蛇为例),Keil的使用(贪吃蛇程序的分析),最后是贪吃蛇制作的基本步骤。 一、51单片
[单片机]
基于<font color='red'>51单片机</font>的贪吃蛇游戏
51单片机基础之外部中断(二)
代码: #include reg51.h typedef unsigned char u8; typedef unsigned int u16; sbit LED=P2^0; sbit KEY=P3^3; void delay(u16 i) { while(i--); } void EXIT1_Init(void) //外部中断初始化 { IT1=1;//跳变沿触发方式(下降沿),低电平触发 EX1=1;//打开INT0的中断允许,打开外部中断0允许 EA=1;//打开总中断 } void main(void) { EXIT1_Init();//打开外部中断 while(1)
[单片机]
51单片机实现串口通信
#include void ckInt()//串口初始化 { TMOD=0x20;//定时计数器1,方式2 TH1=0xF3; //计算出来的初值 TL1=0xF3; //计算出来的初值 PCON=0X80;//波特率加倍 TR1=1;//启动定时计数器1 SCON=0x50;//串口工作方式1 ES=1;//打开串口中断 EA=1;//打开总中断 } void main()//主函数 { ckInt();//调用函数 while(1); } void ckzd()interrupt 4//中断函数,串口中断编号4 { unsigned int DATA; DATA=SBUF;//发送数据 RI=0;//
[单片机]
STM32学习笔记(2) 使用外部中断控制按键
中断概述 中断:打断CPU正常程序运行,转去执行中断服务函数的内容,然后再回来执行原来的程序 NVIC:嵌套向量中断控制器,属于内核外设,管理怎与中断相关的功能 typedef struct { uint8_t NVIC_IRQChannel; //中断源 uint8_t NVIC_IRQChannelPreemptionPriority; //抢占优先级 uint8_t NVIC_IRQChannelSubPriority; //子优先级 FunctionalState NVIC_IRQChannelCmd; //使能或失能 } NVIC_InitTypeDef;
[单片机]
STM32学习笔记(2) 使用外部<font color='red'>中断</font>控制按键
51-基于51单片机射频RFID卡考勤上课上班统计设计
具体实现功能 系统由STC89C52单片机电路+RFID模块电路+1602液晶显示电路+电源电路组成。 具体功能: (1)系统有3张卡,分别代表依次是张三、李四、王二; (2)任何一个人刷卡成功能,1602液晶响应显示,未刷卡显示“N”,刷卡成功后显示“Y”; (3)液晶第二行显示刷卡人数,即出勤总人数。 设计背景 随着信息化建设的不断发展,磁卡得到普遍的推广,大部分采用RFID射频技术,通过射频信号自动识别目标对象获取数据,识别工作不受环境的影响,操作方便快捷,具有防污、防水、加密存储等优点,较传统的接触式IC卡,具有明显的优势,被广泛应用在身份识别、消费等各项服务上,为企业或单位的管理以及人们的生活提供极大
[单片机]
51-基于<font color='red'>51单片机</font>射频RFID卡考勤上课上班统计设计
51单片机的出租车计价器C51程序
已通过模拟测试 #include reg52.h unsigned char cir_num,pwm_mach,temp,distance,wait_time,price,distance; unsigned int a,t; sbit pwm_mach=P1^0; sbit key_clean=P3^0;//定义按键位置 sbit key_stop=P3^1; sbit key_cheak=P3^2; sbit key_oneway=P3^3; sbit key_doubleway=P3^4; unsigned char code led_buf ={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07
[单片机]
51单片机摸拟串口(232)
#include reg51.h sbit BT_SND =P1^0; sbit BT_REC =P1^1; //IO 口模拟232通讯程序 //使用两种方式的C程序 占用定时器0 #define uchar unsigned char #define uint unsigned int #define MODE_QUICK #define F_TM F0 #define TIMER0_ENABLE TL0=TH0; TR0=1; #define TIMER0_DISABLE TR0=0; sbit ACC0= ACC^0; sbit ACC1= ACC^1; sbit ACC2= ACC^2;
[单片机]
热门资源推荐
热门放大器推荐
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved