freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

單片機紅外遙控密碼鎖課程設(shè)計2-其他專業(yè)(編輯修改稿)

2025-02-24 08:03 本頁面
 

【文章內(nèi)容簡介】 IRCOM[6]=IRCOM[2] 4。 //右移 4 次,高四位變?yōu)榈退奈? if(IRCOM[5]9) { IRCOM[5]=IRCOM[5]+0x37。} else IRCOM[5]=IRCOM[5]+0x30。 if(IRCOM[6]9) { IRCOM[6]=IRCOM[6]+0x37。} else IRCOM[6]=IRCOM[6]+0x30。 12 LED3=0。 beep()。 LED3=1。 ir_data=IRCOM[2]。 ir_flag=1。 //信號接收成功標(biāo)志位 EX0 = 1。 } 密碼判斷、報警及修改程序 電子密碼鎖的軟件編程主要分為兩方面,分別是接收密碼后判斷及報警部分和密碼修改控制部分。 首先介紹密碼判斷及報警程序。顯示收到的鍵碼并保存到接收緩存receive_code[8],直到 8位鍵碼接收完畢。然后和原密碼緩存 origin_code[8]比較,判斷密碼是否正確。若密碼正確則將標(biāo)志位 code_right=1;若 不正確則報警并使密碼輸入錯誤次數(shù) wrong_num++,再判斷錯誤次數(shù)是否已達 3次,若是則程序進入死循環(huán)鎖定。程序流程圖所示。 圖 12 密碼判斷、報警大致程序流程 接著介紹密碼修改控制程序。當(dāng)密碼輸入正確以后用戶按下“密碼修改鍵”就會進入密碼修改操作,單片機也就會運行密碼修改程序。 輸入密碼 接收了 8 位鍵碼? code_right=1 密碼是否正確 wrong_num++ wrong_num=3? 錯誤警告 報警鎖定 N N N Y Y Y 輸入密碼 接收了 6 位鍵碼? code_right=1 密碼是否正確 wrong_num++ wrong_num=3? 錯誤警告 報警鎖定 N N N Y Y Y code_right=1 修改密碼? 新密碼接收完畢? N N Y Y 13 圖 13 密碼修改流程圖 進入密碼修改程序首先等待新密碼的第一次輸入。第一次輸入的新密碼放在接收緩存 receive_code[8]中,當(dāng)輸入完第八個密碼后系統(tǒng)會提示再次輸入 密碼,第二次輸入的新密碼放在密碼比較緩存 _code[8]中。第二次輸入密碼完成后就檢驗兩次輸入的新密碼是否相同,如果相同的話就更換密碼,將新密碼儲存到芯片的 eeprom 中。 Eeprom 存儲子程序: /* ================ 打開 ISP,IAP 功能 ================= */ void ISP_IAP_enable(void) { EA = 0。 /* 關(guān)中斷 */ ISP_CONTR = ISP_CONTR amp。 0x18。 /* 0001,1000 */ ISP_CONTR = ISP_CONTR | WaitTime。 /* 寫入硬件延時 */ ISP_CONTR = ISP_CONTR | 0x80。 /* ISPEN=1 */ } /* =============== 關(guān)閉 ISP,IAP 功能 ================== */ void ISP_IAP_disable(void) { ISP_CONTR = ISP_CONTR amp。 0x7f。 /* ISPEN = 0 */ ISP_TRIG = 0x00。 EA = 1。 /* 開中斷 */ } /* ================ 公用的觸發(fā)代碼 ==================== */ void ISPgoon(void) { ISP_IAP_enable()。 /* 打開 ISP,IAP 功能 */ 14 ISP_TRIG = 0x46。 /* 觸發(fā) ISP_IAP 命令字節(jié) 1 */ ISP_TRIG = 0xb9。 /* 觸發(fā) ISP_IAP 命令字節(jié) 2 */ _nop_()。 } /* ==================== 字節(jié)讀 ======================== */ unsigned char byte_read(unsigned int byte_addr) { ISP_ADDRH = (unsigned char)(byte_addr 8)。/* 地址賦值 */ ISP_ADDRL = (unsigned char)(byte_addr amp。 0x00ff)。 ISP_CMD = ISP_CMD amp。 0xf8。 /* 清除低 3位 */ ISP_CMD = ISP_CMD | RdCommand。 /* 寫入讀命令 */ ISPgoon()。 /* 觸發(fā)執(zhí)行 */ ISP_IAP_disable()。 /* 關(guān)閉 ISP,IAP 功能 */ return (ISP_DATA)。 /* 返回讀到的數(shù)據(jù) */ } /* ================== 扇區(qū)擦除 ======================== */ void SectorErase(unsigned int sector_addr) { unsigned int iSectorAddr。 iSectorAddr = (sector_addr amp。 0xfe00)。 /* 取扇區(qū)地址 */ ISP_ADDRH = (unsigned char)(iSectorAddr 8)。 ISP_ADDRL = 0x00。 ISP_CMD = ISP_CMD amp。 0xf8。 /* 清空低 3 位 */ ISP_CMD = ISP_CMD | EraseCommand。 /* 擦除命令 3 */ ISPgoon()。 /* 觸發(fā)執(zhí)行 */ ISP_IAP_disable()。 /* 關(guān)閉 ISP,IAP 功能 */ } /* ==================== 字節(jié)寫 ======================== */ void byte_write(unsigned int byte_addr, unsigned char original_data) { ISP_ADDRH = (unsigned char)(byte_addr 8)。 /* 取地址 */ ISP_ADDRL = (unsigned char)(byte_addr amp。 0x00ff)。 ISP_CMD = ISP_CMD amp。 0xf8。 /* 清低 3 位 */ ISP_CMD = ISP_CMD | PrgCommand。 /* 寫命令 2 */ ISP_DATA = original_data。 /* 寫入數(shù)據(jù)準(zhǔn)備 */ ISPgoon()。 /* 觸發(fā)執(zhí)行 */ ISP_IAP_disable()。 /* 關(guān)閉 IAP功能 */ } 主函數(shù) void main() //主函數(shù) { uchar m,a,b=0,c=0,e,f,k,i=0,j=0,wrong_num=0。 uchar code_right=0。 uchar new1_code,new2_code。 15 uchar receive_code[8],_code[8]。 uint addr。 IE = 0x81。 //允許總中斷中斷 ,使能 INT0 外部中斷 TCON = 0x01。 //觸發(fā)方式為脈沖負邊沿觸發(fā) IRIN=1。 //I/O 口初始化 BEEP=1。 //蜂鳴器初始化 if(byte_read(0x2200)==0x11) //初始密碼讀取 { origin_code[0]=byte_read(0x2021)。 origin_code[1]=byte_read(0x2021)。 origin_code[2]=byte_read(0x2021)。 origin_code[3]=byte_read(0x2021)。 origin_code[4]=byte_read(0x2021)。 origin_code[5]=byte_read(0x2021)。 } else { SectorErase(0x2021)。 byte_write(0x2021,0x0C)。 byte_write(0x2021,0x18)。 byte_write(0x2021,0x5E)。 byte_write(0x2021,0x08)。 byte_write(0x2021,0x1C)。 byte_write(0x2021,0x5A)。 origin_code[0]=0x0C。 origin_code[1]=0x18。 origin_code[2]=0x5E。 origin_code[3]=0x08。 origin_code[
點擊復(fù)制文檔內(nèi)容
試題試卷相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1