新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 可预置的8位计数器程序的主要部分分析

可预置的8位计数器程序的主要部分分析

作者:时间:2012-07-31来源:网络收藏

/******************************************************************/

void pt_cnt(void) //输出控制子开始

{

if((cnt[0]==pre_cnt[0])(cnt[1]==pre_cnt[1])

(cnt[2]==pre_cnt[2])(cnt[3]==pre_cnt[3])

(cnt[4]==pre_cnt[4])(cnt[5]==pre_cnt[5])

(cnt[6]==pre_cnt[6])(cnt[7]==pre_cnt[7])) //若计数值等于

out_flag=1; //输出标志置1

else out_flag=0; //否则输出标志置0

//=================================================

if(out_flag)drv=0; //若输出标志为1,输出端(P3.4)置0,驱动光耦U2

else drv=1; //否则输出端(P3.4)置1

} //输出控制子结束

/**********************************************************/

void main(void) //主开始

{ IE=0x84; //开放CPU中断,开放外中断1的中断

IT1=1; //置外中断1为边沿触发

while(1) //无限循环

{P3_6=0;P3_7=1; //禁止发送给显示器,消隐有效

SBUF=0x00;while(!TI);TI=0; //向IC2发送0x00,使IC2输出为全0

if((P30x24)!=0x24)keydown_flag=1; //检测P3.2、P3.5是否为高电平。

//若不为高电平,说明有键按下,键被按下标志置1

else keydown_flag=0; //否则,键被按下标志置0

//-------------------------------------------------------------------------------

SBUF=0xfe;while(!TI);TI=0; //向IC2发送0xfe

if(!P3_2)set_flag=!set_flag; //若P3.2为0,说明S9键按下,标志set_flag取反

//==================================================

if(!set_flag){cnter();dis_cnter();pt_cnt();delay(100);}

//若标志set_flag为0,调用计数、显示计数、输出控制的子程序

else {scan_key();dis_pre_cnter();delay(10);}

否则标志set_flag为1,调用扫描S1~S8键、显示值的子程序

//=====================================================

if(keydown_flag)delay(300); //因有键按下,调用延时300mS子程序,

//以免调整键值的速度过快

}

} //主程序结束

/***************************************************************/

void extern_int1(void) interrupt 2 using 1 //外中断1服务子程序

{

cnt[0]++; //的最低位加1

}

尘埃粒子计数器相关文章:尘埃粒子计数器原理

上一页 1 2 3 下一页

评论


相关推荐

技术专区

关闭