proteus论坛|仿真论坛
直播中

zhihuizhou

12年用户 7005经验值
擅长:测试与测量
私信 关注
[经验]

【proteus练一练2.20】INT0 中断计数

/*  名称:INT0 中断计数  
  
  说明:每次按下计数键时触发
INT0 中断,中断程序累加计数,  
计数值显示在 3 只数码管上,按下
清零键时数码管清零
*/
#include
#define uchar unsigned char
#define uint unsigned int
//0~9 的段码
uchar code DSY_CODE[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
//计数值分解后各个待显示的数位
uchar DSY_Buffer[]={0,0,0};
uchar Count=0;
***it Clear_Key=P3^6;
//数码管上显示计数值
void Show_Count_ON_DSY()
{
DSY_Buffer[2]=Count/100; //获取3 个数

DSY_Buffer[1]=Count%100/10;
DSY_Buffer[0]=Count%10;
  if(DSY_Buffer[2]==0)   //高位为 0 时不显示
{
  DSY_Buffer[2]=0x0a;
  if(DSY_Buffer[1]==0)   //高位为 0,若第二位为 0同样不显示
   DSY_Buffer[1]=0x0a;
}
P0=DSY_CODE[DSY_Buffer[0]];
P1=DSY_CODE[DSY_Buffer[1]];
P2=DSY_CODE[DSY_Buffer[2]];
}
//主程序
void main()
{
P0=0x00;
P1=0x00;
P2=0x00;
IE=0x81; //允许 INT0中断
IT0=1;  //下降沿触发
while(1)
{
  if(Clear_Key==0) Count=0; //清0
  Show_Count_ON_DSY();
}
}
//INT0 中断函数
void EX_INT0() interrupt 0
{
Count++;  //计数值递增
}
proteus仿真图:
游客,如果您要查看本帖隐藏内容请回复







回帖(16)

yefengling

2013-11-27 10:23:47
看看啊啊a .....
举报

小浩神倾城

2013-12-6 18:55:40
先混点节分
举报

madaha0010

2014-1-6 22:36:34
漂亮,学习了。谢谢
举报

mrplplplpl

2014-1-7 10:55:47
学习一下{:3:}
举报

滕梓任

2014-1-7 22:28:56
不错不变      hoho
举报

罗峰天

2015-1-6 21:00:42

俺看                        
举报

花生米1212

2015-1-9 13:13:30
看看靠靠靠靠靠靠
举报

Giliable

2016-7-19 13:25:41
【proteus练一练2.20】INT0 中断计数
举报

徐明

2017-10-4 21:25:39
学学学u
举报

fontex

2017-10-26 13:18:45
很好,学习了。谢谢!
举报

20ccl

2017-10-31 00:37:10
很好
举报

大苏打

2020-3-8 16:36:20
66666666666666666666
举报

赵德驻

2020-3-8 23:18:16
学学!!!!!!!!!!!!!
举报

袁达仁

2021-5-8 02:48:40
学习一下 谢谢楼主
举报

王松

2021-6-1 21:10:11
谢谢楼主,正在学习
举报

gxj_2021

2021-6-25 10:44:54
学习一下,谢谢分享!!!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分