c8051之外部中断实验

在聊到外部中断之前我们首先要理解中断的概念:

中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行。比如当你正在用手洗衣服,然后有人敲门,这时候你停下来洗衣服去开门,然后回来继续洗衣服。这里的有人敲门你去开门,就是处理中断。

简单来说中断就是当达到某种条件,单片机暂停当前正在做的事情,而去处理中断程序。

本次我们来简单谈一下,c8051的外部中断,下面我们看一下在数据手册中的外部中断说明

此次实验我们用到的是外部中断INT0,可以看出外部中断0可以配置为低电平触发,和下降沿触发。

还有就是中断中断标志位IE0,IE1,当中断没有发生的时候,中断标志位为0。当中断发生的时候,中断标志位由硬件置1,c8051的中断标志在进入中断的时候会自动清除,这里我们不需要管。

下面我们来看一下c8051f020中断系统结构图

 

 

 

下面我们来看一下外部中断0的配置过程

1.开启交叉开关(可以看出为XBR2寄存器的第六位:XBR2=0x40;)

2.连接外部中断0(可以看出为XBR1寄存器的第二位:XBR1=0x04;)

 

 3.配置触发方式(可以看出为TCON的第0位和第1位为我们重点关注的:IT0=0;设置为低电平触发)

 4.配置中断标志(  我们可以配置IE0=0;也可以不配置,这是IE0为中断标志,IE0=0时不发生中断,当发生中断时候此时会由硬件置1,然后转到中断服务函数以后,用硬件置0)

 

  

  5.开启外部中断EX0=0

 6.开启总中断  EA=1

   

5.可以配置优先级也可以不配置因为就一个 

 ​​​​​​​

 在这时候我们会有一个疑惑IE0中写道CPU会转向中断服务程序,那么中断服务程序是什么呢?

 中断向量可用来存放中断服务程序的入口地址或跳转到中断服务程序的入口地址,意思就是我们写好中断服务函数,就等着中断发生就直接跳转到我们的中断服务函数中,中断服务函数的写法有一些讲究:

  void    函数名 () interrupt  x

函数名:为自己随意起的,但是注意字母数字下划线。

x:为中断服务号(优先级号)在课本28页

下面看一下我写的实现杜邦线插上LED灯亮,拔掉LED灯灭的程序。

这次实验要求同学们插上一下杜邦线点亮一个灯,按顺序点亮每个灯。(类似流水灯效果)

 

 

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
本项目原本设计的是一个毫欧表,为了测试C8051F350的24bit ADC,顺便兼容了一个电压表功能。一个直流电压表最关键的有3个部分:模拟前端、ADC和基准电压。这里就做简短描述,详解附件的更详细的图文讲解。 五位半电压表参数特性: - 100mV/1000mV/10V/100V四个档位,大概有50%超量程余量 - 五位半显示,最大150000 count - 支持任意值校正,通过面板按钮即可校正。精度保守一点吧,0.01% Reading+4 LSB,后面有测试图 - Fast/Slow两档速度,Fast:10次/秒,Slow:1次/秒 - 数据从USB UART输出,波特率115200(目前只输出,不能从上位机控制) - 默认5分钟自动关机,可以关闭该功能 - 使用一节锂电池供电,支持从USB充电 - 支持背光,可以关闭 - 工作电流:17mA(背光关闭);44mA(背光打开)。一节14500(5号)锂电池可以连续工作1.5~2天(背光关闭) 五位半电压表实物截图: 模拟前端 模拟前端肩负了几个重要任务:输入信号的衰减或者放大/低通滤波/阻抗变换/防护。 大家都知道一般来说ADC只有一个量程,台式的一般是10/20V,手持的三位半或者四位半是200mV,这个称为基本量程,也是精度最高的量程,其他的量程都要把输入信号放大或者衰减到这个量程再来测量。这个表的基本量程是1V,而且由于MCU内置了PGA,因此模拟前端仅需要考虑衰减。 ADC 使用C8051F350内置的24bit ADC,这个在毫欧表里面已经说的比较多了。这个表再重温一下,在PGA=1,10Hz的条件下,RMS noise是2.38uV,峰峰值 noise为2.38*6.6=15.7uV,也就是1V档的1.5个LSB(五位半),大概看到两个数在跳(极端情况可能3个),在Slow模式下,把10个读数平均,提升log(10)/log(4)=1.66bit,2^1.66=3.16LSB,因此在Slow模式基本上不会跳数了(当然,由于舍入问题导致的最后一位跳是不能避免的)。 基准电压 这里可以使用C8051F350的内置基准(最大15ppm温度系数),或者外部基准可以用REF5025(工业级:2.5ppm(典型)/3ppm(最大)温度系数;商业级:3/8ppm)或者MAX6192(A级:2/5ppm;B级:4/10ppm;C级8/25ppm)。 使用内置和外置基准的frimware是不一样的,不能搞错。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值