51单片机(STC89C52)的中断和定时器

#include<reg52.h>

sbit led=P3^0;

/** 中断的设置,首先设置中断的触发方式,再设置开启终端,最后开启总中断。*/

void main() {

IT0=1; //设置外部中断0的触发方式为下降沿

EX0=1; //开启外部中断0

IT1=1; //设置外部中断1的触发方式为下降沿

EX1=1; //开启外部中断1

EA =1; //总中断开关

while(1) {

P0=0xaa;

P0=0xff;

}

}

void EX0_ISR(void) interrupt 0 {

led=~led;

}

void EX1_ISR(void) interrupt 2 { //外部中断1的中断在此为2!

led=~led;

}

#include <reg52.h>

// 定义I/0引脚名称

sbit led1=P1^1;

sbit led2=P1^2;

sbit led3=P1^3;

sbit led4=P1^4;

sbit P32=P3^2;

//全局变量及位标志定义

bit FINT0;

bit FINT1;

bit FT0;

bit FT1;

bit FT2;

unsigned char T0_10ms;

unsigned char T0_50ms;

unsigned char T0_100ms;

//函数声明

void int_0(); //外部中断0

void int_1(); //外部中断1

void timer_0(); //定时器中断1

void timer_1(); //定时器中断2

void serial_1(); //串行中断1

void serial_2(); //串行中断2

//用户函数声明

void initial(); //初始化

void main(){

initial();

while(1){

P32=0; //为了使按'取消'、'确定'键能够产生INT0及INT1中断

//led4=0; //上一句等价于此句

if(FINT0){ //中断0来到要做什么事情

FINT0=0;

led1=0; //INT0中断时点亮

led2=0;

led3=0;

led3=0; //可以在此设一个断点

}

if(FINT1){ //中断1来到要做什么事情

FINT1=0;

led1=1; //INT1中断时熄灭

led2=1;

led3=1;

}

if(FT0){

FT0=0;

if(++T0_10ms > 30){

T0_10ms=0;

//定时多少做什么事,未初始化里定时器尚未设置

}

}

}

}

void initial(){

EA=1; // CPU所有中断开(IE最高位MSB)

EX0=1; // INT0中断开

IT0=0; // INT0 0:低电平触发, 1:下降沿触发

EX1=1; // INT1中断开

IT1=0; // INT1 0:低电平触发, 1:下降沿触发

return;

}

//INT0中断 由P3.2引脚产生

void int_0() interrupt 0 using 0 {

FINT0=1;

}

//INT1中断 由P3.3引脚产生

void int_1() interrupt 2 using 1 {

FINT1=1;

}

//定时器0中断

void timer_0() interrupt 1 using 2 {

FT0=1;

}

//定时器1中断

void timer_1() interrupt 3 using 3 {

FT1=1;

}

//串行中断1

void serial_1() interrupt 4 { }

//定时器2中断

void timer_2() interrupt 5 {

FT2=1;

}

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
这是DS小龙哥编写的(STC)51单片机开发手册,适合51单片机入门初学者,大学生等当做工具书使用。实验的平台采用的是普中科技单片机平台,文章中的知识点详细,代码清晰,注释清楚,可以复制粘贴,配套代码详细。目前写了4个大章节,后续会持续更新,更新后重新下载即可。 每个例子的完整的工程源码在PDF里有百度云盘的下载链接。失效了可以私信发送。 目前PDF里包含的目录如下: 51单片机开发手册 1 一、 单片机开发入门知识介绍 1 1.1 51单片机介绍 1 1.2 市场上的主流单片机种类 1 1.3 FPGA与单片机区别 2 1.4 DSP和单片机区别 3 二、搭建开发环境 4 2.1 STC单片机命名介绍 4 2.2 安装keil软件 4 2.3 新建工程 5 2.4 下载程序 8 2.5 使用辅助工具计算延时时间 12 2.6 STC90C51系列单片机引脚图 13 三、 基础入门学习 14 3.1 LED灯模块 14 3.2 蜂鸣器模块 17 3.5 独立按键 18 3.6 矩阵键盘 22 3.7 独立数码管(静态数码管) 26 3.8 动态数码管 29 3.9 LED 16*16点阵 33 3.10 采用38译码器驱动8位数码管 48 四、单片机提高篇 53 4.1 定时器 53 4.2 中断 60 4.3 串口通信 71 4.4 NEC红外线遥控器解码 80 4.5 DS18B20温度传感器 87 4.6 EEPROM存储芯片(AT24C02) 96 4.7 DS1302 实时时钟芯片 107 4.8 PCF8591(ADC/DAC)转换芯片 119 4.9 (HC-SR04)超声波测距模块 130 4.10 使用计数器测量NE555脉冲频率 134 4.11 LCD1602显示屏 139 四、 单片机项目篇 146 5.1 16x16点阵滚动显示 146
### 回答1: stc89c51和stc89c52是两种不同的单片机芯片。 stc89c51是一种基于8051的单片机芯片,具有8位数据总线、4096字节的程序存储器、256字节的数据存储器、5组8位的可编程定时器/计数器、一个串口和一个外部中断stc89c52是一种基于8052的单片机芯片,与stc89c51相比,它具有更高的处理能力和更大的程序存储器(8K字节)和数据存储器(384字节)。 ### 回答2: STC89C51和STC89C52都是基于8051架构的单片机,二者的区别主要在于存储器容量和外设接口。 首先,STC89C51只有32KB的Flash存储器,而STC89C52则有8KB更多的Flash存储器,达到40KB。这意味着STC89C52可以运行更大程序,同时还可以存储更多的数据。 其次,STC89C52中的扩展IO口数量比STC89C51多6个。STC89C51只有32个扩展IO口,而STC89C52则有38个。这意味着STC89C52可以连接更多的外部设备,例如传感器、马达、LED等等。 此外,STC89C52还具有更快的工作频率。STC89C51最高频率为33MHz,而STC89C52则可以达到40MHz。这意味着STC89C52可以更快地执行指令,从而提高系统性能。 在使用上,因为STC89C52具有更多的存储器和IO口,因此可以支持更复杂的应用。而STC89C51则适合于一些较简单的应用。 总之,STC89C51和STC89C52虽然在硬件方面存在区别,但它们都是8051单片机,都可以用于控制系统。具体选用哪一个主要取决于应用场景和需求。 ### 回答3: STC89C51和STC89C52都是以8051内核为基础的单片机芯片,但它们在某些方面有一些不同之处。 首先,STC89C51和STC89C52的主频不同。STC89C51的主频为11.0592MHz,而STC89C52的主频为22.1184MHz。这意味着STC89C52可以处理更多的指令,速度也更快,而STC89C51则具有更好的兼容性。 其次,STC89C51和STC89C52的存储容量也有所不同。STC89C51具有64KB闪存和1KB RAM,而STC89C52具有8KB闪存和1KB RAM。虽然STC89C52闪存容量较低,但它可以通过外部存储器进行扩展。此外,STC89C52还可以通过ISP接口进行在线编程,而STC89C51则需要通过并行端口进行编程。 最后,STC89C51和STC89C52的功耗也有所不同。STC89C52采用更低的功率设计,能够更好地满足低功耗应用,而STC89C51的功耗相对较高。 综上所述,STC89C52相对于STC89C51来说在性能、存储和功耗方面都有优势,但是STC89C51在可靠性和兼容性方面更好。因此,选择哪种型号需要根据具体需求进行权衡。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值