日韩床上生活一级视频|能看毛片的操逼网站|色悠悠网站在线观看视频|国产免费观看A淫色免费|国产av久久久久久久|免费A级视频美女网站黄|国产毛片av日韩小黄片|热久久免费国产视频|中文字幕无码色色|成人在线视频99久久久

機(jī)電之家資源網(wǎng)
單片機(jī)首頁(yè)|單片機(jī)基礎(chǔ)|單片機(jī)應(yīng)用|單片機(jī)開發(fā)|單片機(jī)文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
可預(yù)置的8位計(jì)數(shù)器程序的主要部分分析
可預(yù)置的8位計(jì)數(shù)器程序的主要部分分析
 更新時(shí)間:2009-7-9 16:54:31  點(diǎn)擊數(shù):0
【字體: 字體顏色

可預(yù)置的8位計(jì)數(shù)器程序的主要部分分析
#include //器件配置文件
#define uchar unsigned char //變量類型的宏定義
#define uint unsigned int
uchar code SEG7[10]={0x03,0x9f,0x25,0x0d,0x99, //0~9的數(shù)碼管段碼
0x49,0x41,0x1f,0x01,0x09};
uchar data cnt[8]; //在data區(qū)定義8位長(zhǎng)度的數(shù)組,用來存放計(jì)數(shù)值
uchar data pre_cnt[8]; //在data區(qū)定義8位長(zhǎng)度的數(shù)組,用來存放預(yù)置值
sbit drv=P3^4; //定義輸出驅(qū)動(dòng)端
bit set_flag; //定義工作標(biāo)志
bit out_flag; //定義輸出標(biāo)志
bit keydown_flag; //鍵按下標(biāo)志

/****************************************************************/
void scan_key(void) //掃描S1~S8鍵子程序開始
{uchar i,m=0x01; //定義兩個(gè)字符型局部變量,并賦值0x01給m
P3_6=0;P3_7=1; //禁止發(fā)送給顯示器,消隱有效
for(i=0;i<8;i++) //循環(huán)8次
{
SBUF=255-m;while(!TI);TI=0; //依次發(fā)送數(shù)據(jù)使IC2的輸出從右至左的列線為0
if(!P3_5)pre_cnt++; //若檢測(cè)到P3.5為0,說明某列線送出0時(shí)與連接
//該列線的按鍵被按下,數(shù)組中對(duì)應(yīng)的存放單元加1
m<<=1; //m的取值使從右向左的下一條列線為0
} //掃描S1~S8鍵子程序結(jié)束
//----------------------------------------------------------------------------------------
for(i=0;i<8;i++) //循環(huán)8次
{if(pre_cnt>9)pre_cnt=0;} //對(duì)數(shù)組中的8個(gè)單元進(jìn)行調(diào)整,其范圍為0~9
}

/*************************************************************/
void dis_cnter(void) //顯示計(jì)數(shù)器值子程序開始
{uchar i; //定義字符型局部變量i
P3_7=1;P3_6=1; //消隱有效,允許顯示
for(i=0;i<8;i++) //循環(huán)8次
{SBUF=SEG7[cnt];while(!TI);TI=0;} //根據(jù)8個(gè)單元的計(jì)數(shù)值查表發(fā)送顯示
P3_7=0; //關(guān)閉消隱,正常顯示
} //顯示計(jì)數(shù)器值子程序結(jié)束

/****************************************************************/
void cnter(void) //計(jì)數(shù)轉(zhuǎn)換子程序開始
{uchar i; //定義字符型局部變量i
for(i=0;i<7;i++) //循環(huán)8次
{if(cnt>9){cnt=0;cnt[i+1]++;}}//若計(jì)數(shù)器某位值大于9,則該位回0,
//而高位被進(jìn)位加1
//------------------------------------
if(cnt[7]>9){for(i=0;i<8;i++)cnt=0;}// 若計(jì)數(shù)器最高位值大于9,則計(jì)數(shù)器全清0
} //計(jì)數(shù)轉(zhuǎn)換子程序結(jié)束

/******************************************************************/
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])) //若計(jì)數(shù)值等于預(yù)置值
out_flag=1; //輸出標(biāo)志置1
else out_flag=0; //否則輸出標(biāo)志置0
//=================================================
if(out_flag)drv=0; //若輸出標(biāo)志為1,輸出端(P3.4)置0,驅(qū)動(dòng)光耦U2
else drv=1; //否則輸出端(P3.4)置1
} //輸出控制子程序結(jié)束

/**********************************************************/
void main(void) //主程序開始
{ IE=0x84; //開放CPU中斷,開放外中斷1的中斷
IT1=1; //置外中斷1為邊沿觸發(fā)
while(1) //無限循環(huán)
{P3_6=0;P3_7=1; //禁止發(fā)送給顯示器,消隱有效
SBUF=0x00;while(!TI);TI=0; //向IC2發(fā)送0x00,使IC2輸出為全0
if((P3&0x24)!=0x24)keydown_flag=1; //檢測(cè)P3.2、P3.5是否為高電平。
//若不為高電平,說明有鍵按下,鍵被按下標(biāo)志置1
else keydown_flag=0; //否則,鍵被按下標(biāo)志置0
//-------------------------------------------------------------------------------
SBUF=0xfe;while(!TI);TI=0; //向IC2發(fā)送0xfe
if(!P3_2)set_flag=!set_flag; //若P3.2為0,說明S9鍵按下,標(biāo)志set_flag取反
//==================================================
if(!set_flag){cnter();dis_cnter();pt_cnt();delay(100);}
//若標(biāo)志set_flag為0,調(diào)用計(jì)數(shù)、顯示計(jì)數(shù)、輸出控制的子程序
else {scan_key();dis_pre_cnter();delay(10);}
否則標(biāo)志set_flag為1,調(diào)用掃描S1~S8鍵、顯示預(yù)置值的子程序
//=====================================================
if(keydown_flag)delay(300); //因有鍵按下,調(diào)用延時(shí)300mS子程序,
//以免調(diào)整鍵值的速度過快
}
} //主程序結(jié)束

/***************************************************************/
void extern_int1(void) interrupt 2 using 1 //外中斷1服務(wù)子程序
{
cnt[0]++; //計(jì)數(shù)器的最低位加1
}

  • 上一篇: AT89C2051制作的點(diǎn)鈔機(jī)
  • 下一篇: 構(gòu)造一個(gè)51單片機(jī)的實(shí)時(shí)操作系統(tǒng)
  • 發(fā)表評(píng)論   告訴好友   打印此文  收藏此頁(yè)  關(guān)閉窗口  返回頂部
    熱點(diǎn)文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評(píng)論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機(jī)電之家 | 會(huì)員助手 | 免費(fèi)鏈接

    點(diǎn)擊這里給我發(fā)消息66821730(技術(shù)支持)點(diǎn)擊這里給我發(fā)消息66821730(廣告投放) 點(diǎn)擊這里給我發(fā)消息41031197(編輯) 點(diǎn)擊這里給我發(fā)消息58733127(審核)
    本站提供的機(jī)電設(shè)備,機(jī)電供求等信息由機(jī)電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實(shí)性、準(zhǔn)確性和合法性。
    機(jī)電之家對(duì)此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請(qǐng)聯(lián)系機(jī)電之家,機(jī)電之家將及時(shí)作出處理。
    Copyright 2007 機(jī)電之家 Inc All Rights Reserved.機(jī)電之家-由機(jī)電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機(jī)電一體化學(xué)會(huì)
    中國(guó)行業(yè)電子商務(wù)100強(qiáng)網(wǎng)站

    網(wǎng)站經(jīng)營(yíng)許可證:浙B2-20080178-1