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

正文內(nèi)容

單片機課程設(shè)計總結(jié)-預(yù)覽頁

2025-07-20 04:03 上一頁面

下一頁面
 

【正文】 IN31)。語句后的分號表示空循環(huán)體,也就是{。 0xf0 ) | 0x05。 ++var表示對變量var先增一;var—表示對變量后減一。 如果將一個16位二進數(shù)賦給一個8位的字節(jié)變量,則自動截斷為低8位,而丟掉高8位。 TMOD = ( TMOD amp。 表示無限執(zhí)行該語句,即死循環(huán)。注意標(biāo)出晶體頻率(選用12MHz),還有輔助電容30pF 接復(fù)位:RES(PIN9)。例1:用P1口輸出一倍頻方波。其實,只需要在上面的程序中添加延時程序即可。i1000。 //該循環(huán)是一個大概的延時,具體時間要看匯編語言的指令才能判斷。 while (1) { n = 0。 //將第0位的值送至第7位 n|=(m5)amp。 //將第2位的值送至第5位 n|=(m1)amp。 //將第4位的值送至第3位 n|=(m3)amp。 //將第6位的值送至第1位 n|=(m7)amp。i1000。}}注意:一個字節(jié)的8位DD6至D0,、比如P3=0x0f,、。對應(yīng)8的頂上一畫,按順時針方向排,中間一畫為g,小數(shù)點為h。以單支共陰數(shù)碼管為例,可將段極接到某端口Pn,共陰極接GND,則可編寫出對應(yīng)十六進制碼的七段碼表字節(jié)數(shù)據(jù)如下圖:動態(tài)顯示的電路連接如下圖所示:P1口下面,我們編程在數(shù)碼管上顯示出“1 2 3 4”。 //消隱,讓數(shù)碼管開始處于不亮的狀態(tài) P0 = LedCode[1]。i1000。 P2 amp。i++)。= 0xfb。P2 |= 0x0f。 for(i=0。下面介紹顯示的驅(qū)動程序:首先,定義一個頭文檔 ,描述可用函數(shù),如下:ifndef _ LedDriver_H _ //防止重復(fù)引用該文檔,如果沒有定義過符號 _KEY_H_,則編譯下面語句define _ LedDriver_H _ //只要引用過一次,即 include ,則定義符號 _KEY_H_void LedPrint ( unsigned char Dat ) //數(shù)據(jù)緩沖區(qū)間,完成移位功能void LedWork ( void ) //送數(shù)到顯示數(shù)碼管endif然后,定義函數(shù)體文檔 ,如下:include include “”Code unsigned char LedCode[16]= //Code是表示這個數(shù)組的存儲空間{0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c, 0x39, 0x5e, 0x79, 0x71}。DisBuf[2] = DisBuf[3]。 P0 = LedCode[DisBuf[i]]。 break。 break。m++)。 LedPrint( 3 )。顯示“12345678”P1端口接8聯(lián)共陰數(shù)碼管SLED8的段極:,…,P2端口接8聯(lián)共陰數(shù)碼管SLED8的段極:,…,方案說明:晶振頻率fosc=12MHz,數(shù)碼管采用動態(tài)刷新方式顯示,在1ms定時斷服務(wù)程序中實現(xiàn)include unsigned char DisBuf[8]。 // (0≤i≤7) 循環(huán)刷新顯示,由于是靜態(tài)變量,此賦值只做一次。 //將對應(yīng)陰極置低,顯示if( ++i = 8 ) i=0。}void Timer0Init( void ){ TMOD=(TMOD amp。 //允許T0開始計數(shù) ET0 = 1。 i8。 f7,0xfd,0xfb,0xfe}。 char Kbhit ( void ) { P1_0 = 1。 if ((P1^0xff) != 0) return ( 1 )。if ((P1^0xff) !=0) return (1)。P1 = 0xf0。 Z =X | Y。 case 0x7e: return ( 3 )。 case 0x7d: return ( 7 )。 case 0x7b: return ( 11 )。 case 0x77: return ( 15 )。}下面是鍵盤的Driver程序::ifndef _KeyDriver_h_define _KeyDriver_h_char Khbit ( void )。 else return ( 1 )。 P1 = 0x0f。 case 0xde: return ( 1 )。 case 0xdd: return ( 5 )。 case 0xdb: return ( 9 )。 case 0xd7: return ( 13 )。 for (i=1。} LedWork ( )。 //讀取按鍵值,如果沒有按鍵則等待到按鍵為止void keyPut( unsigned char ucKeyVal )。該隊列為先進 //先出,循環(huán)存取,下標(biāo)從0到 KeyBufSize1unsigned char KeyBufWp=0。 }unsigned char keyGet( void ){ unsigned char retVal。 //讀位置加1,超出隊列則循環(huán)回初始位置 return( retVal )。此時可以退回按鍵隊列。 KeyBuf[ KeyBufRp ] = ucKeyVal。 //低四位輸入,高四位輸出0x=P1amp。 0x0f。 } //比如按鍵‘1’,得X=0x7,Y=0x7,算得retVal= 5,所以返回函數(shù)值1。 //不改變T1的工作方式,T0為定時器方式1TL0 = 20000。 //允許T0計數(shù)溢出時產(chǎn)生中斷請求EA=1。 //方式1為軟件重載TH0 = (20000)8。 //按鍵則轉(zhuǎn)入狀態(tài)1 case 1:if( keyScan()==0 ) sts=0。 case 2: if(keyScan()==0 ) sts=3。 //真松鍵,回狀態(tài)0,等待下一次按鍵過程 }}第五章 中斷系統(tǒng)應(yīng)用對于51系列單片機的中斷資源在本課件中就不再多加描述 ,同學(xué)們可以參考書上的一些資料,主要在這里是介紹它的應(yīng)用。 PT1 = 0。 //設(shè)置串口的中斷級別最高 INT1 = 1。 //設(shè)置INT0工作于邊沿模式,INT1工作于電平模式 ET1 = 1。 //允許串口中斷 EA = 1。 //disable interrupt for system C_T2 = 0。 //high 8 bits TL2 = RCAP2L。 //enable Timer2 interrupt EA = 1。}下面的程序是將按鍵和顯示放在中斷服務(wù)程序中進行處理。 //2^32 seconds for 136 years unsigned int ms。//void ClockSet( struct sClock *ptr )。 KeyTimeCall()。 //重載模式 C_T2 = 0。 //重載值低8位 TR2 = 1。}——————————————————————————————————————:ifndef _KeyDriver_H_define _KeyDriver_H_define KeyBufSize 4char kbhit( void )。endif:include include unsigned char KeyBufWp=0。 }char getch( void ){ char ret。}void KeyBufIn( char dat ){ KeyBuf[ KeyBufWp ] = dat。 static unsigned char KeyScanCode=0。 ms=20。 KeyScan|=P1。 case 1: if( KeyScanCode == KeyScan ) //去抖后確為鍵按下 { sts = 2。 case 2: if( KeyScanCode != KeyScan ) //檢測松開按鍵 { if( KeyScan == 0xff ) sts=3。 //是干擾 break。void LedTimeCall( void )。 DisBuf[1] = DisBuf[2]。 P2 |= 0x0f。 if( ++index == 4 ) index=0。*/include //該頭文檔描述單片機所有特殊功能寄存器的稱名,程序中可直接使用,比喻39。 EA = 0。 LedPrint(Char_o)。 //K1K16返回的鍵值分別為015 LedPrint( keyVal )。include //該頭文檔描述單片機所有特殊功能寄存器的稱名,程序中可直接使用,比喻39。 if( INT0==0 ) function=1。 EA = 0。 LedPrint(Char_o)。 //K1K16返回的鍵值分別為015 LedPrint( keyVal )。 if( old != new ) { minute = (new % 3600) / 60。 LedPrint( second / 10 )。 } }第六章 計數(shù)器/定時器的應(yīng)用對于T0,T1定時器,主要的控制寄存器為TMOD、TCON,我們可以通過設(shè)置這些寄存器的值來改變定時器的工作情況。0XF0 ) | 0x60。 //對于定時器0和定時器1可以不用寫這句,因為硬件會自動對TF1進行清零TXD =!TXD。 //設(shè)置好兩個定時器的工作情況 TH0 = 100。 TL1 = 4567。 TR0 = 1。}void Timer1_int ( void ) interrupt 3{ TXD =! TXD。include void main ( void ){ EA = 0。 TL1 = TH1。}void Timer0_int ( void ) interrupt 3{ static unsigned char TimerC = 4。define LedPutchar(bitN, Dat ) {DisBuf[bitN]=Dat。char getch( void )。 unsigned long second。//void ClockSet( struct sClock *ptr )。unsigned char DisBuf[4]。 DisBuf[3] = dat。 0x1f ] | (DisBuf[index]amp。 if( ++index == 4 ) index=0。char kbhit( void ){ return( KeyBufWp KeyBufRp )。 return( ret )。 unsigned char KeyScan。 if( ms ) return。 P1=0xf0。 KeyScanCode=KeyScan。 //返回鍵值 } else //否則認為是干擾,重新檢測 sts = 0。 //按鍵超過1秒認為是連續(xù)按鍵 //,直到松開為止 //要處理組合按鍵(,保證所有組合鍵到位 //還可能保持不松開全部按鍵的情況下,轉(zhuǎn)換按其它鍵組合 // case 3: if( KeyScan == 0xff ) sts=0。void ClockCall_ms( void ){ LedTimeCall()。 CP_RL2 = 0。 0x00ff。 //clear interrupt status ++。 ClockCall_second()。P139。unsigned char Second。unsigned long fcy。 IP=0。 TH0=200。 ET0=1。 TL1=0。 Second=0。 TCON |= 0x50。 EA = 1。 TMOD = (TMOD amp。 ET0=1。 EX1=1。 oldK64=0。}void T0intr( void ) interrupt 1{ if( HighLow==0 ){ ++us100。 tmp1=(TH18) + (TL1)。 oldK64=tmp2。 }}void T1intr( void ) interrupt 3 { ++K64。 case 1: oldT0=TL0。 case 2: { unsigned char tmp1, tmp2。 TR0=1。 break。 //display fcy 引用前面的數(shù)碼管驅(qū)動程序,注意下面對T0中斷服務(wù)程序的修改 { unsigned char i
點擊復(fù)制文檔內(nèi)容
語文相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1