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

正文內(nèi)容

單片機(jī)第14章c語言程序設(shè)計(jì)-wenkub.com

2025-01-13 17:56 本頁面
   

【正文】 參考程序: 114 圖 144 單片機(jī)與 ADC0809中斷方式通信的接口電路 115 include include define ADC0809CH0 0x7FF8 /* 7FF8H為 0809通道 0地址 */ define ADC0809CH1 0x7FF9 /* 7FF9H為 0809通道 1地址 */ define ADC0809CH2 0x7FFA /* 7FFAH為 0809通道 2地址 */ define ADC0809CH3 0x7FFB /* 7FFBH為 0809通道 3地址 */ define uchar unsigned char /* 定義 uchar為單字節(jié)無符號數(shù) */ define uint unsigned int /* 定義 uint為雙字節(jié)無符號數(shù) */ xdata uint cChannelIndex; /* cChannelIndex存儲類型為 xdata */ xdata uchar cDigitalData[4]=0; /*存放轉(zhuǎn)換結(jié)果數(shù)組的存儲類型為xdata */ xdata uint nCurrentAddr; /*nCurrentAddr存儲類型為 xdata */ 116 Void Uart_Init(); /*聲明初始化函數(shù) */ sbit P25=0xA5; /*特殊功能寄存器 */ sbit P26=0xA6; /*特殊功能寄存器 */ sbit P27=0xA7; /*特殊功能寄存器 */ void SelectChannel(uint c0809addr,uchar c0809data); /*聲明“選擇通道并啟動轉(zhuǎn)換”函數(shù) */ uchar GetResult( ); /*聲明“獲取轉(zhuǎn)換結(jié)果”函數(shù) */ void Delay( ) ; /*聲明延時(shí)函數(shù) */ main( ) { Uart_Init( ); P0=0xFF; /* P0端口初始化為 0xFF*/ P1=0xFF; /* P1端口初始化為 0xFF*/ 117 P2=0xFF; /* P2端口初始化為 0xFF*/ P3=0xFF; /* P3端口初始化為 0xFF*/ EX0=1; /*開外部中斷 0中斷允許 */ EA=1; /*總中斷允許 */ cChannelIndex=0; nCurrentAddr=ADC0809CH0; /*給出通道 0地址 */ SelectChannel(ADC0809CH0,cChannelIndex); /*選擇 ADC0809通道 0*/ Delay(); /*調(diào)用延時(shí)函數(shù) */ cChannelIndex++; /*地址加 1*/ nCurrentAddr=ADC0809CH1; /*切換為通道 1地址 */ 118 SelectChannel(ADC0809CH1,cChannelIndex); /*選擇 ADC0809通道 1*/ Delay(); /*調(diào)用延時(shí)函數(shù) */ cChannelIndex++; /*地址加 1*/ nCurrentAddr=ADC0809CH2; /*切換為通道 2地址 */ SelectChannel(ADC0809CH2,cChannelIndex); /*選擇 ADC0809通道 2*/ Delay( ); /*延時(shí) */ cChannelIndex++; /*地址加 1*/ 119 Delay( ); /*延時(shí) */ while(1); } Uart_Init() /* 初始化函數(shù) */ {SCON = 0x52; /* 設(shè)置串行口控制寄存器 SCON*/ TMOD = 0x21; /* 12MHz時(shí)鐘時(shí)的波特率為 2400 */ TCON = 0x69; /* 設(shè)置定時(shí)器控制寄存器 TCON */ TH1= 0xf3; /* 寫入 TH1的計(jì)數(shù)初值 */ nCurrentAddr=ADC0809CH3; /*切換為通道 3地址 */ SelectChannel(ADC0809CH3,cChannelIndex); /*選擇 ADC0809通道 3*/ 120 } void Delay() /*延時(shí)函數(shù) */ { uint i; for(i=0; i200; i++); } void SelectChannel(uint c0809addr,uchar c0809data) /*“選擇通道并啟動轉(zhuǎn)換”函數(shù) */ { *((uchar xdata *)c0809addr)=c0809data; /*將 c0809addr 強(qiáng)制轉(zhuǎn)換為指向 AD芯片當(dāng)前通道地址的無符號整型指針,并使用該指針訪問該通道,將變量 c0809data數(shù)據(jù)寫入 AD芯片 */ 121 void int0() interrupt 0 using 0 /*外中斷 0的中斷函數(shù) */ { cDigitalData[cChannelIndex]=GetResult(); printf(Got channel %d Result\n,cChannelIndex); /*響應(yīng) 后輸出 */ } uchar GetResult( ) /*得到轉(zhuǎn)換結(jié)果 */ {uchar cResult; cResult=*((uchar xdata *)nCurrentAddr); /*將 nCurrentAddr強(qiáng)制轉(zhuǎn)換為指向當(dāng)前轉(zhuǎn)換結(jié)果的無符號字符型指針,并使用該指針對 ADC的輸出端口進(jìn)行訪問,讀取轉(zhuǎn)換結(jié)果存入cResult*/ 122 return cResult; /*返回轉(zhuǎn)換后數(shù)字量 */ } 上述程序?qū)?ADC0809通道 0~3這 4路通道 的模擬量以中斷方式進(jìn)行采集。 113 ADC0809應(yīng)用程序的編寫 介紹單片機(jī)控制 ADC0809進(jìn)行 A/D轉(zhuǎn)換的程序設(shè)計(jì)。更重要的是,代碼段一節(jié)省了數(shù)據(jù)存儲空間,因?yàn)樗鼰o需使用指針變量,而宏是不占用數(shù)據(jù)存儲空間的,它只占用程序存儲空間。 理解 *((uchar xdata*)DAC0832Addr),它相當(dāng)于 *p, p是指向外部數(shù)據(jù)空間 0xfffe的 unsigned char類型指針。 ( 2)程序的偽代碼部分(宏的使用) 將 DAC0832的端口地址 0xfffe宏定義為 DAC0832Addr,是為了定義明確,方便使用和修改。 /*注意,使用 case時(shí)要考慮所有的可能性,為了窮舉,避免出現(xiàn)意想不到的結(jié)果,應(yīng)使用 default作為陷阱 */ } return。 */ } break。 case KV_END: /* “結(jié)束”鍵 */ { /*結(jié)束單片機(jī)的主體循環(huán) */ /*停止采樣 */ /*顯示整個(gè)測試過程中的最大、最小值即調(diào)用 max_min_print子函數(shù) */ } break。 }while(1)。 if(~(KEY_PORT | 0xF0) != 0) continue。 if(keyValue==0) return KV_FALSE。 if(~(KEY_PORT | 0xF0) == 0) return KV_FALSE。 typedef unsigned int uint。然后獲取行號:驅(qū)動 P1口低半字節(jié)為全 0,高半字節(jié)為全 1,讀回 P1口的低半字節(jié)值。 96 圖 1010 行列式鍵盤的接口電路 97 圖 中 ,每個(gè) 按鍵行數(shù) 與 P1口高半字節(jié) 對應(yīng), 列數(shù)與P1口低半字節(jié) 對應(yīng), 行列號結(jié)合即可確定鍵位 。 程序如下: include include /*因?yàn)橛玫?printf( )函數(shù),所以要包含 */ Uart_Init(); sbit P10=0x90; /*定義 P1口各位的位名 */ sbit P11=0x91; sbit P12=0x92; 91 sbit P13=0x93; sbit P14=0x94; sbit P15=0x95; sbit P16=0x96; sbit P17=0x97; main( ) { Uart_Init( ); while(1); /*無限循環(huán),不斷查詢按鍵狀態(tài),鍵值判斷和提示信 息的顯示 */ { 92 if(P10==0) printf(key down\n); /*如 0號鍵按下,串行輸出按下鍵信息 */ if(P11==0) printf(key down\n); /*如 1號鍵按下,串行輸出按下鍵信息 */ if(P12==0) printf(key down\n); /*如 2號鍵按下,串行輸出按下鍵信息 */ if(P13==0) printf(key down\n); /*如 3號鍵按下,串行輸出按鍵信息 */ if(P14==0) 93 printf(key down\n); /*如 4號鍵按下,串行輸出按鍵信息 */ if(P15==0) printf(key No. 5 down\n); /*如 5號鍵按下,串行輸出按鍵信息 */ if(P16==0) printf(key No. 6 down\n); /*如 6號鍵按下,串行輸出按鍵信息 */ if(P17==0) printf(key No. 7 down\n); /*如 7號鍵按下,串行輸出按鍵信息 */ } } 94 Uart_Init( ) /* 實(shí)驗(yàn)系統(tǒng)初始化函數(shù),因要通過實(shí)驗(yàn)系統(tǒng)串行輸出顯示 */ { SCON=0x52; /* 設(shè)置串行口控制寄存器 SCON */ TMOD=0x20; /* 12MHz時(shí)鐘時(shí)波特率為 2400 */ TCON=0x69; /* TCON */ TH1=0xf3; /* TH1 */ } 95 行列式鍵盤查詢方式 【 例 147】 本例為 2022年某省電子大賽 D題“電能質(zhì)量檢測裝置”某參賽者設(shè)計(jì)中的一部分。 圖 142 串行口的方式 0 外接 8個(gè) LED發(fā)光二極管的接口電路 86 include include sbit P10 = 0x90; Xdata char nIndex; Delay(); main() { SCON = 0x00; /* 串行口初始化為方式 0*/ ES=1; EA=1; /* 全局中斷允許 */ nIndex=1; SBUF=nIndex; P10=0; while(1) 87 {; } } void Serial_Port() interrupt 4 using 0 { if(TI==1){ P10=1; Delay( ); P10=1; nIndex=1; if(nIndex==0) nIndex=1; SBUF=nIndex; } TI=0; RI=0; 88 } Delay( ) {int nCounter; for(nCounter=0; nCounter128; nCounter++); } 89 獨(dú)立式鍵盤查詢方式 【 例 146】 采用查詢方式對實(shí)現(xiàn)獨(dú)立式鍵盤的鍵值讀取。 STB為控制端,當(dāng) STB=0時(shí),則 8位并行輸出端關(guān)閉,但是允許串行數(shù)據(jù)從 A和 B端輸入。 定時(shí)器 T0方式 1中斷定時(shí)的 參考程序 : include Char i=100; /*給變量 i賦初值 */ void main() { TMOD=0x01; /*設(shè)置定時(shí)器 T0為方式 1*/ TH0=0xee; /*向 TH0寫入初值的高 8位 */ 82 TL0=0x00; /*向 TL0寫入初值的低 8位 */ P1=0x00; /*P1口 8只 LED點(diǎn)亮 */ EA=1; /*總中斷允許 */ ET0=1; /*定時(shí)器 T0中斷允許 */ TR0=1; /*啟動定時(shí)器 T0*/ while(1) ; /*循環(huán) */ { ; } } 83 Void
點(diǎn)擊復(fù)制文檔內(nèi)容
畢業(yè)設(shè)計(jì)相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1