s3c2440 定时器延时

此文为使用2440的定时器实现延时函数

我将定时器中断配置为10us中断一次,实现了10us步进的延时

一、硬件部分:

参见之前的定时器中断部分。

二、软件部分:

1.添加延时函数


其中time_count为全局变量

void delay_10us(unsigned int count)
{
	time_count=0;		//init to 0
	INTMSK &= ~(1<<10);		//mask timer0_Interrupted
	while(time_count<count);
	INTMSK |= (1<<10);		//not mask timer0_Interrupted
} 

2.修改定时器初始化函数和中断处理函数

/*
*prescalers=0-255
*中断频率
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
/*********************************************************** 实验名称:可调电子钟(数码管显示)示例程序 程序说明:按键S1切换时分秒,按下S6加一,按下S3减一 ***********************************************************/ #include unsigned char code SEG7[11]={0xC0,/*0*/ 0xF9,/*1*/ 0xA4,/*2*/ 0xB0,/*3*/ 0x99,/*4*/ 0x92,/*5*/ 0x82,/*6*/ 0xF8,/*7*/ 0x80,/*8*/ 0x90,/*9*/ 0xbf,/*-*/ }; unsigned short int tcount; struct time { unsigned char second; unsigned char minute; unsigned char hour; }time1; /***************************************/ /* 延时子程序 */ /***************************************/ void delay(k) unsigned int k; { unsigned char j; while((k--)!=0) for(j=0;j<125;j++); } /***************************************/ /* 时钟调整子程序 */ /***************************************/ TimeUpDown(n,x,y) unsigned char n,x,y; { if(P3_2==0) { delay(50); if(P3_2==0) { n++; if(n==x) n=0; while(P3_2==0); } } if(P3_3==0) { delay(50); if(P3_3==0) { if(n==0) n=y; else n--; while(P3_3==0); } } return n; } /***************************************/ /* 显示子程序 */ /***************************************/ void display(DisSecondH,DisSecondL,DisMinutH,DisMinutL,DisHourH,DisHourL) unsigned char DisSecondH,DisSecondL,DisMinutH,DisMinutL,DisHourH,DisHourL; { P0=SEG7[DisSecondH]; //显示秒钟的十位 P2=0xfe; delay(2); P0=SEG7[DisSecondL]; //显示分钟的个位 P2=0xfd; delay(2); P0=0xbf; //显示- P2=0xfb; delay(2); P0=SEG7[DisMinutH]; //显示秒钟的十位 P2=0xf7; delay(2); P0=SEG7[DisMinutL]; //显示分钟的个位 P2=0xef; delay(2); P0=0xbf; //显示- P2=0xdf; delay(2); P0=SEG7[DisHourH]; //显示小时的个位 P2=0xbf; delay(2); P0=SEG7[Dis

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值