標題: 數碼管定時實驗 [打印本頁]
作者: 2745230558@qq 時間: 2016-6-27 15:33
標題: 數碼管定時實驗
#include "system.h"
#include "altera_avalon_timer_regs.h"
#include "altera_avalon_pio_regs.h"
#include "alt_types.h"
#include "sys/alt_irq.h"
#include <unistd.h>
alt_u16 flag; //毫秒定時計數器
alt_u16 second; //秒計數器
//alt_u8 seg[16] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
alt_u8 seg[16] = {
63, 6, 91, 79, 102, 109, 125, 7,
127, 111, 119, 124, 57, 94, 121, 113
}; // 0,1,2,....9, a, b, c, d, e,f
void delay(alt_u32 cnt);
void seg_dis(alt_u16 dis_num);
//毫秒定時中斷函數
static void handle_Timer0_interrupts(void)
{
IOWR_ALTERA_AVALON_TIMER_STATUS(TIMER_BASE,0);//清TO標志
if(flag < 1000) flag =flag+1;
else
{
flag = 0;
second++;
if(second==60) second=0;
}
}
//主函數
int main (void)
{
flag = 0;
second = 0;
//IOWR_ALTERA_AVALON_PIO_DATA(LED_PIO_BASE,0x00); //數碼管位選管腳關閉
//IOWR_ALTERA_AVALON_PIO_DATA(SEGCS4_PIO_BASE,0xf); //數碼管片選管腳關閉
alt_irq_register(TIMER_IRQ,TIMER_BASE,handle_Timer0_interrupts); //注冊定時器中斷函數
IOWR_ALTERA_AVALON_TIMER_CONTROL(TIMER_BASE,7); //啟動timer允許中斷,連續計數
while(1)
{
//IOWR_ALTERA_AVALON_PIO_DATA(SEGCS4_PIO_BASE,0xf); //數碼管片選管腳關閉
IOWR_ALTERA_AVALON_PIO_DATA(PIO_HEX0_BASE,seg[(flag%100)/10]); //數碼管位選顯示變量second的個位
//IOWR_ALTERA_AVALON_PIO_DATA(SEGCS4_PIO_BASE,0x7); //數碼管片選個位
delay(2500); //delay 5ms
IOWR_ALTERA_AVALON_PIO_DATA(PIO_HEX1_BASE,seg[(flag%1000)/100]);
delay(2500); //delay 5ms
IOWR_ALTERA_AVALON_PIO_DATA(PIO_HEX2_BASE,seg[(second%10)]);
delay(2500); //delay 5ms
IOWR_ALTERA_AVALON_PIO_DATA(PIO_HEX3_BASE,seg[(second%100)/10]);
delay(2500); //delay 5ms
}
}
//延時函數(延時時間為(2+2*i)us)
void delay(alt_u32 cnt)
{
alt_u32 i =0;
while(i < cnt)
{
i++;
}
}
圖5 參考程序
6、點擊project->build project;
7、點擊run->run as->NiosII hardware;觀測結果;
作者: cjn1411714511 時間: 2017-11-6 19:26
這是什么機子的?
歡迎光臨 (http://www.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |