⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 定时器中断和驱动程序 定时器中断和驱动程序
💻 C
字号:
#include"uhal.h"
#include"myuart.h"
#include"Timer.h"
#include"Isr.h"
#include"44b.h"
#include"zlg7289.h"

#pragma import(__use_no_semihosting_swi)  // ensure no functions that use semihosting 

extern Timer3INTCount;
extern int Zlg7289SIOBand;
extern int Zlg7289SIOCtrl;
void Timer();

int hour = 0, miniter = 0, second = 0 ;

int main(void)
{	int val=0;
    ARMTargetInit();	//开发版初始化

    Zlg7289_Reset();
    Init_Timer3(100,16,41770,20000);
    INTS_OFF();//Disable interrupt in PSR
    SetISR_Interrupt(INT_TIMER3_OFFSET, Timer,0);
    Open_INT_GLOBAL();
    Open_INT(BIT_TIMER3);
    INTS_ON();//Enable interrupt in PSR
    Start_Timer3();
    Uart_Printf("\n");
    while(1)
      {
       if(rPDATG&ZLG7289_KEY)
 {
 	int key = GetKey();
 	switch (key)
 	{
 	case 1:
 		hour ++;
 		hour %=24;
 	break;
 	
 	case 2:
  		miniter ++;
 		miniter %= 60;
 	break;
		
	case 3:
 		second ++;
 	break;
 	
 	default:
 		Uart_Printf("no use");
 	break; 
 	};
 	
 }
      
      Uart_Printf("\r%d  ",rTCNTO3); Delay(1000);}
}

void Timer()
{
 second++;
 if(second == 60)
 {
 	second = 0;
 	miniter++;
 }
 if(miniter == 60)
 {
 	miniter = 0;
 	hour++;
 }
 if(hour == 24)
 {
 	hour = 0;
 }
 
ZLG7289_ENABLE();//使zlg7289占有同步串口
		Delay(5);//延时
		WriteSDIO(ZLG7289_CMD_HIDE);//使个位数码管显示
		WriteSDIO(255);
		Delay(1);//延时
		WriteSDIO(ZLG7289_CMD_DATA0|0);//数码管以方式0译码,第一个数码管亮
		WriteSDIO(second%10);//显示个位
		Delay(1);//延时
		WriteSDIO(ZLG7289_CMD_DATA0|1);//数码管以方式0译码,第一个数码管亮
		WriteSDIO(second/10);//显示个位
		Delay(1);//延时
		WriteSDIO(ZLG7289_CMD_DATA0|2);//数码管以方式0译码,第一个数码管亮
		WriteSDIO(10);//显示个位
		Delay(1);//延时
		
		
        WriteSDIO(ZLG7289_CMD_DATA0|3);//数码管以方式0译码,第一个数码管亮
		WriteSDIO(miniter%10);//显示个位
		Delay(1);//延时
		WriteSDIO(ZLG7289_CMD_DATA0|4);//数码管以方式0译码,第一个数码管亮
		WriteSDIO(miniter/10);//显示个位
		Delay(1);//延时
		WriteSDIO(ZLG7289_CMD_DATA0|5);//数码管以方式0译码,第一个数码管亮
		WriteSDIO(10);//显示个位
		Delay(1);//延时

        WriteSDIO(ZLG7289_CMD_DATA0|6);//数码管以方式0译码,第一个数码管亮
		WriteSDIO(hour%10);//显示个位
		Delay(1);//延时
		WriteSDIO(ZLG7289_CMD_DATA0|7);//数码管以方式0译码,第一个数码管亮
		WriteSDIO(hour/10);//显示个位

		Delay(1);//延时


ZLG7289_DISABLE();

 Uart_Printf("\r%d      ",Timer3INTCount);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -