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

正文內(nèi)容

[工學(xué)]第5章中斷與定時(shí)-資料下載頁

2025-01-19 12:02本頁面
  

【正文】 輸出的 5 kHz方波 。 由 輸出 5 kHz的方波 , 即每隔 100 μs( 周期為 200 μs )使 的電平發(fā)生一次變化 。 則 TH0中的初始值 X=M-N=256- 100/2=206。 ( 機(jī)器周期為 2 μs ) 下面是有關(guān)的程序。 MOV TL0, # 0FFH MOV TH0, # 206 MOV TL1, # BAUD 。 BAUD MOV TH1, # BAUD MOV TMOD, # 27H 。 置 T0工作方式 3 。 TL0 MOV TCON, # 55H 。 啟動(dòng)定時(shí)器 T0、 T1, 置外部中斷 0 和 1 。 MOV IE, # 9FH 。 TL0 溢出中斷服務(wù)程序(由 000BH單元轉(zhuǎn)來) : TL0INT: MOV TL0, # 0FFH … 。 外部引腳 T0 引起中斷處理程序 RETI TH0 溢出中斷服務(wù)程序(由 001BH轉(zhuǎn)來) : TH0INT: MOV TH0, # 206 CPL RETI 此處串行口中斷服務(wù)程序、 外中斷 0和外中斷 1的中斷服務(wù)程序沒有列出。 定時(shí) /計(jì)數(shù)器用于外部中斷擴(kuò)展 擴(kuò)展方法是,將定時(shí) /計(jì)數(shù)器設(shè)置為計(jì)數(shù)器方式,計(jì)數(shù)初值設(shè)定為滿程,將待擴(kuò)展的外部中斷源接到定時(shí) /計(jì)數(shù)器的外部計(jì)數(shù)引腳。從該引腳輸入一個(gè)下降沿信號(hào),計(jì)數(shù)器加 1后便產(chǎn)生定時(shí) /計(jì)數(shù)器溢出中斷。 例如,利用 T0擴(kuò)展一個(gè)外部中斷源。將 T0設(shè)置為計(jì)數(shù)器方式,按方式 2工作, TH0、 TL0的初值均為 0FFH, T0允許中斷, CPU開放中斷。 其初始化程序如下: MOV TMOD, 06H ;置 T0為計(jì)數(shù)器方式 2 MOV TL0, 0FFH ;置計(jì)數(shù)初值 MOV TH0, 0FFH SETB TR0 ;啟動(dòng) T0工作 SETB EA ; CPU開中斷 SETB ET0 ;允許 T0中斷 中斷及定時(shí)系統(tǒng)綜合應(yīng)用舉例 例 510 用圖 312的顯示電路 , 使用 C51編程語言編寫程序?qū)? 現(xiàn)對按鍵的計(jì)數(shù) , 并將計(jì)數(shù)的結(jié)果實(shí)時(shí)顯示在數(shù)碼管上 。 要 求只顯示有效的位 , 無效位不顯示 。 分析: 在本例中 , 要求所顯示的內(nèi)容不再是固定的 ,而是動(dòng)態(tài)變化的 。 由于按鍵脈沖的寬度是隨機(jī)的 , 為了確保準(zhǔn)確捕獲按鍵的次數(shù) , 需要將外部中斷設(shè)置成下降沿觸發(fā)的方式 。 編寫程序時(shí) , 需要定一個(gè)數(shù)組作為顯示緩沖區(qū) 。 題目要求 “ 只顯示有效的位 , 無效位不顯示 ” , 因此還沒有有效數(shù)據(jù)的高位應(yīng)該不予顯示 。 但是在顯示緩沖區(qū)中會(huì)存在高位無效位和低位有效位都為 “ 0” 的情況 (如:10, 100, 1000等 ), 因此在顯示程序讀取顯示緩沖區(qū)時(shí) ,應(yīng)先從高位向低位讀取 , 高位的 0都對應(yīng)取熄滅代碼 , 一旦讀到非 0的數(shù)字即意味著后面的所有 0都應(yīng)該取 0對應(yīng)的顯示代碼而顯示 “ 0” 。 中斷及定時(shí)系統(tǒng)綜合應(yīng)用 根據(jù)分析 , 可以畫出程序的流程圖如下: 開 始開 啟 外 部 中 斷 0下 降 沿 觸 發(fā)初 始 化 T 2方 式 0 , 開 T 2 中 斷等 待 中 斷外 部 中 斷 0中 斷 函 數(shù) 入 口計(jì) 數(shù) 加 1中 斷 返 回T 2 中 斷 函數(shù) 入 口關(guān) 定 時(shí) 器調(diào) 用 顯 示 程 序中 斷 返 回掃 描 完 一 周 ?清 滅 零標(biāo) 志置 熄 滅字 碼取 值 譯 碼 位 碼 加 1返 回主 程 序I N T 0 中 斷T 2 中 斷 函 數(shù)顯 示 子 程 序YN轉(zhuǎn) 換 位 數(shù) 達(dá) 到 6 ?取 樣 計(jì) 數(shù)用 1 0 取 余 送 顯示 緩 沖 區(qū)計(jì) 數(shù) 除 1 0計(jì) 數(shù) 已 為 0 ?滅 零 標(biāo)志 有 效 ?本 位 為 0 ?復(fù) 位 位 選 、 計(jì) 數(shù) 變 量置 位 滅 零 標(biāo) 志YNNNYNYYC51程序代碼如下: /***************************************************/ /*功能說明: */ /*對外部中斷 0進(jìn)行計(jì)數(shù),并將計(jì)數(shù)結(jié)果實(shí)時(shí)顯示在 LED數(shù) 碼管上 */ /***************************************************/ include define uchar unsigned char define INITVALUE_RCAP2H ((655362022)/256) define INITVALUE_RCAP2L ((655362022)%256) long countnum=0。 uchar dis_buf[6]={0}。 uchar loop=0,ziwei=0。 bit zflag=1。 //數(shù)碼管 0~ A~F及熄滅的段碼 uchar code zixing[17]= {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, 0x77,0x7c,0x39,0x5e,0x79,0x71,0x00}。 /********主函數(shù) *********/ void main() { /*初始化外部中斷 0*/ IT0=1。 //外部中斷為下降沿觸發(fā) EA=1。 //開總中斷 EX0=1。 //開外部中斷 0 /*初始化 T2*/ T2MOD=0x00。 //時(shí)鐘信號(hào)不輸出 , 加計(jì)數(shù) 。 不需設(shè)置 T2CON=0x00。 //定時(shí)方式 , 自動(dòng)重裝 RCAP2H= INITVALUE_RCAP2H。 //定時(shí)器自動(dòng)重裝數(shù)值初始化 RCAP2L= INITVALUE_RCAP2L。 TR2=1。 //啟動(dòng)定時(shí)器 2 ET2=1。 //開 T2中斷 EA=1。 //開總中斷 while(1)。 //等待中斷 , 實(shí)際中這里可加入其它處理子程序 } /****外部中斷 0處理函數(shù) ********/ void in0() interrupt 0 { long numtemp。 int loopi。 countnum++。 //數(shù)值加一 numtemp =countnum。 //以下為十進(jìn)制轉(zhuǎn)換程序 for(loopi=5。loopi=0。 loopi) { if(numtemp ==0) break。 //結(jié)果已經(jīng)為零不需繼續(xù)轉(zhuǎn)換 dis_buf[loopi]= numtemp %10。 numtemp /=10。 } } /************T2中斷處理函數(shù) ************/ void T2interrupt() interrupt 5 { TR2=0。 //關(guān)閉定時(shí)器 display()。 //調(diào)用顯示函數(shù) TR2=1。 //開定時(shí)器 } /******顯示子函數(shù) ****/ //每次掃描一個(gè) LED數(shù)碼管 //從高位向地位掃描 void display() { uchar zixingtemp,ziweitemp。 if(loop==6)//掃描一周后恢復(fù)初始 { loop=0。 ziwei=0。 zflag=1。 } /*高位為 0熄滅判斷 */ zixingtemp=dis_buf[loop]。 //讀取顯示緩沖區(qū)顯示值實(shí)現(xiàn)無效位不顯示 if(zflag) //高位全零標(biāo)志為 1則判斷本位 { if(zixingtemp==0) //本位為 0 { zixingtemp =16。//熄滅 } else { zflag=0。 //不為零清除高位為零標(biāo)志 } } zixingtemp =zixing[zixingtemp]。 //轉(zhuǎn)換數(shù)值為 7段碼 ziweitemp =P1。 //讀取 p1口值 //屏蔽高三位 ziweitemp = ziweitemp amp。0x1f。 ziweitemp +=ziwei。 //高三位加片選碼 P0= zixingtemp。 //字型送 p0口 P1= ziweitemp。 //片選送 p1口 ziwei+=0x20。 //片選移位 loop++。 } EN
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1