标题: 单片机INT0中断计数 初学简单程序 [打印本页]

作者: 你脑子有坑啊    时间: 2017-12-22 08:31
标题: 单片机INT0中断计数 初学简单程序
INT0中断计数                    
       说明:每次按下计数键时触发INT0中断,中断程序累加计数,  计数值显示在3只数码管上,按下清零键时数码管清零



作者: 你脑子有坑啊    时间: 2017-12-22 08:33
#include<reg51.h> #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; sbit 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++;         //计数值递增 }




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1