您的位置 首页 厂商

数码管中止试验

学习了低电平触发与边沿触发的区别,不同中断的使用。参考程序代码如下#includeiom16v.h>#includemacros.h>#includedelay.h#defi…

学习了低电平触发与边缘触发的差异,不同中止的运用。

参阅程序代码如下

#include
#include
#include “delay.h”
#define uint unsigned int
#define uchar unsigned char
//uchar led7[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F}; //共阴7段数码管显现0-9对应的8bit
uchar led7[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //共阳7段数码管显现0-9对应的8bit
uchar position[4]={0x01,0x02,0x04,0x08};//4片数码管对应的片选bit
uchar buffer[4];//每位需求显现的数字都放在此数组中
uchar time[2];//分,秒数组
uchar timecounter;//计时循环

void main(void)//主函数
{
uchar i;
Init(); //初始化端口及接口
time[0]=12; //初始化时刻
time[1]=34; //初始化时刻
DoBuffer(); //把2个十位数变为4个个位数
init_devices();
while(1)
{
Display(); //动态扫描时刻为8ms

if(timecounter++>100) //循环100次,即8*100约为1秒延时
{
timecounter=0;
if(time[1]++>59) //秒加1,而且判别是否为60
{
time[1]=0;
if(time[0]++>59)//分加1,而且判别是否为60
{
time[0]=0;
}
}
DoBuffer();
}
}
}

void Init(void) //初始化设置
{
DDRA=0x0f; //设置端口A的低四位为输出
PORTA=0x08; //设置端口A的低四位为输出为低电平
DDRB=0xff; //设置端口B方向为输出
PORTB=0xff; //设置端口B输出高电平
}

void Display(void)//扫描显现函数,单个扫描时刻为2ms
{
uchar i;
for(i=0;i<4;i++)
{
PORTB=led7[buffer[i]]; //4个数转成对应的8位显现码送PORTB
PORTA=position[i]; //挑选1个8段码进行显现
delay_ms(2); //延时5毫秒,1秒显现25帧人眼是能够辨认的,1/25=40ms,所以要小于40ms
PORTA=0x00; //封闭
}
}

void DoBuffer(void)//时刻数字分位,2个2位数变为4个1位数
{
uint i,j=0; //j不能忘掉赋值
for(i=0;i<2;i++) //时刻为2个2位数
{
buffer[j++]=time[i]/10; //共2次循环,第一次中,第1个2位数取出十位
buffer[j++]=time[i]%10; //共2次循环,第一次中,第1个2位数取出个位
}
}

#pragma interrupt_handler int0_isr:2
void int0_isr(void) //INT0中止程序
{
while(!(PIND&(1<{
PORTB=led7[buffer[3]]; //输出第4位数字
PORTA=position[3]; //第4位数字片选开
}
}

#pragma interrupt_handler int1_isr:3
void int1_isr(void)
{
while(!(PIND&(1<{
PORTB=led7[buffer[2]]; //输出第3位数字
PORTA=position[2]; //第3位数字片选开
}
}

void init_devices(void)
{
CLI();//铲除一切中止标志
MCUCR = 0x00;//INT0 INT1 下降沿发生中止请求
G%&&&&&%R=0xc0; //设置int0和int1中止答应
SEI(); //开大局中止
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/changshang/274879.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部