<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 數碼管中斷實(shí)驗

數碼管中斷實(shí)驗

作者: 時(shí)間:2016-11-11 來(lái)源:網(wǎng)絡(luò ) 收藏



本文引用地址:http://dyxdggzs.com/article/201611/316843.htm

學(xué)習了低電平觸發(fā)與邊沿觸發(fā)的區別,不同中斷的使用。

參考程序代碼如下


#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}; //共陽(yáng)7段數碼管顯示0-9對應的8bit
uchar position[4]={0x01,0x02,0x04,0x08};//4片數碼管對應的片選bit
uchar buffer[4];//每位需要顯示的數字都放在此數組中
uchar time[2];//分,秒數組
uchar timecounter;//計時(shí)循環(huán)

void main(void)//主函數
{
uchar i;
Init(); //初始化端口及接口
time[0]=12; //初始化時(shí)間
time[1]=34; //初始化時(shí)間
DoBuffer(); //把2個(gè)十位數變?yōu)?個(gè)個(gè)位數
init_devices();
while(1)
{
Display(); //動(dòng)態(tài)掃描時(shí)間為8ms

if(timecounter++>100) //循環(huán)100次,即8*100約為1秒延時(shí)
{
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(yíng)的低四位為輸出
PORTA=0x08; //設置端口A(yíng)的低四位為輸出為低電平
DDRB=0xff; //設置端口B方向為輸出
PORTB=0xff; //設置端口B輸出高電平
}

void Display(void)//掃描顯示函數,單個(gè)掃描時(shí)間為2ms
{
uchar i;
for(i=0;i<4;i++)
{
PORTB=led7[buffer[i]]; //4個(gè)數轉成對應的8位顯示碼送PORTB
PORTA=position[i]; //選擇1個(gè)8段碼進(jìn)行顯示
delay_ms(2); //延時(shí)5毫秒,1秒顯示25幀人眼是可以識別的,1/25=40ms,所以要小于40ms
PORTA=0x00; //關(guān)閉
}
}

void DoBuffer(void)//時(shí)間數字分位,2個(gè)2位數變?yōu)?個(gè)1位數
{
uint i,j=0; //j不能忘記賦值
for(i=0;i<2;i++) //時(shí)間為2個(gè)2位數
{
buffer[j++]=time[i]/10; //共2次循環(huán),第一次中,第1個(gè)2位數取出十位
buffer[j++]=time[i]%10; //共2次循環(huán),第一次中,第1個(gè)2位數取出個(gè)位
}
}

#pragma interrupt_handler int0_isr:2
void int0_isr(void) //INT0中斷程序
{
while(!(PIND&(1<{
PORTB=led7[buffer[3]]; //輸出第4位數字
PORTA=position[3]; //第4位數字片選開(kāi)
}
}

#pragma interrupt_handler int1_isr:3
void int1_isr(void)
{
while(!(PIND&(1<{
PORTB=led7[buffer[2]]; //輸出第3位數字
PORTA=position[2]; //第3位數字片選開(kāi)
}
}


void init_devices(void)
{
CLI();//清除所有中斷標志
MCUCR = 0x00;//INT0 INT1 下降沿產(chǎn)生中斷請求
GICR=0xc0; //設置int0和int1中斷允許
SEI(); //開(kāi)全局中斷
}



關(guān)鍵詞: 數碼管中斷實(shí)

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>