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

正文內(nèi)容

基于單片機的四路搶答器設(shè)計資料-文庫吧

2024-10-23 14:56 本頁面


【正文】 (void) { uchar key_number。 max7219_reset()。 //初始化 MAX7219 while(1) { foul_flg=0。 //設(shè)置初始環(huán)境 time_over_flg=0。 TR0=0。 //禁止 T0 運行 write_digit(DIGIT0,LED_code[0x0])。//上電后 3 個數(shù)碼管全部顯示 0 write_digit(DIGIT1,LED_code[0x0])。 write_digit(DIGIT2,LED_code[0x0])。 while((control_key()==1)amp。amp。(foul_flg==0)) //如果主持人沒有按鍵 { key_number=getkey_num()。 //檢查是否有人犯規(guī) if(key_number==0) //如果沒有,進行下一次循環(huán) continue。 else //如果有人犯規(guī) { foul_handle()。 //犯規(guī)處理 foul_flg=1。 //設(shè)置犯規(guī)標志 } } if(foul_flg==1) //如果有人犯規(guī) { while(control_key()==1)。 //等待主持人按鍵以進入下 一輪 continue。 //主持人按鍵后進入下一輪 } else //如果沒有人犯規(guī),必定是主持人允許答題 { intr_counter=set_time()。 //讀取倒計時時間 init_t0()。 //定時器 T0 開始計時 buz_on()。 //蜂鳴器響 500ms while(time_over_flg==0amp。amp。key_flg==0) { key_number=getkey_num()。 //在規(guī)定時間內(nèi)檢查是否有按鍵 if(key_number!=0) //如果有 { key_handle(key_number)。//按鍵處理 key_flg=1。 //設(shè)置有人按鍵答題標志 TR0=0。 //停止 T0 運行 } else //否則循環(huán)檢測 { display_time()。 //并顯示剩余時間 continue。 } } if(key_flg==1) //如果有人在規(guī)定時間內(nèi)答題 { while(control_key==1)。 //等待主持人按鍵以進入下一輪 continue。 //主持人按鍵后進 入下一輪 } else //倒計時時間到仍無人按鍵 { time_over_handle()。 //超時處理 while(control_key==1)。 //等待主持人按鍵以進入下一輪 continue。 //主持人按鍵后進入下一輪 } } } } bit control_key(void) //檢測主持人是否按鍵 { if(KEY5==1) //如果 KEY5 為高,說明沒有按鍵 return 1。 //返回 1,表示沒有按鍵動作 else //如果 KEY5 為低,說明可能有按鍵動作 delay_20ms()。 //延時 20ms,去抖動 if(KEY5==1) //如果 20ms 后 KEY5 變?yōu)楦唠娖?,是干擾 return 1。 //返回 1 else //如果 20ms 后仍為低電平,確認有按鍵動作 return 0。 //返回 0 } uchar set_time(void) //根據(jù)設(shè)置決定倒計時時間 { uchar intr_counter。 if(P3^6==0) intr_counter=200。 //10s else if(P3^5==0) intr_counter= //8s else if (P3^4==0) intr_counter=120。 //6s else if (P3^3==0) intr_counter=80。 //4s else intr_counter=200。 //如果沒有設(shè)置,默認為 10s return intr_counter。 } uchar get_key_num() //檢測哪個參賽者按鍵 { uchar key_state=0。 key_state=P1。 key_stateamp。=0x0f。 //讀取 P1 端口的低 4 位 if(key_state==0x0f) //若均為高電平,說明無人按鍵 return 0。 //返回 1 else { key_state^=0xff。 if(key_stateamp。0x01) return 1。 //如果 KEY1 被按下,返回 1 else if(key_stateamp。0x02) return 2。 //如果 KEY2 被按下,返回 2 else if(key_stateamp。0x04) return 3。 //如果 KEY3 被按下,返回 3 else return 4。 //如果 KEY4 被按下,返回 4 } } void foul_handle(uchar key_number) //犯規(guī)處理 { write_digit(DIGIT0,key_number)。 //顯示犯規(guī)者號碼 write_digit(DIGIT1,0x0f)。 //顯示 “FF” write_digit(DIGIT2,0x0f)。 buz_on()。 //蜂鳴器響 } void time_over_handle(void) //超時處理 { write_digit(DIGIT0,0x0)。 //顯示 “0” write_digit(DIGIT1,0x0e)。 //顯示 “EE” write_digit(DIGIT2,0x0e)。 buz_on()。 //蜂鳴器響 } void key_handle(uchar key_number) //按鍵處理 { write_digit(DIGIT0,key_number)。 //顯示按鍵者號碼 buz_on()。 } void display_time(void) //顯示倒計時剩余時間 { uchar number。 write_digit(DIGIT0,LED_code[0])。 number=int_counter/20。 //秒數(shù) write_digit(DIGIT1,number/10)。 //秒數(shù)的十位數(shù)字 write_digit(DIGIT2,number%10)。 //秒數(shù)的個位數(shù)字 } void buz_on(void) { uchar i。 BUZ=0。 //開蜂鳴器 for(i=1。i=25。i++) //延時 500ms delay_20ms。 BUZ=1。 //關(guān)蜂鳴器 } void init_t0(void) { TMOD=0x01。 //T0 選擇工作方式 1, 16 位定時器 TH0=TIMER_HBYTE。 //定時時間為 50ms TL0=TIMER_LBYTE。 EA=1。 //使能 CPU 中斷 ET0=1。 //使能 T0 溢出中斷 TR0=1。 //T0 運行 } void isr_t0(void) interrupt 1 //T0 中斷服務(wù)函數(shù) { TH0=TIMER_HBYTE。 //定時時間為 50ms TL0=TIMER_LBYTE。 intr_counter。 //中斷次數(shù) if(intr_counter==0) //倒計時時間到 { time_over_flg=1。 //設(shè) 置超時標志 TR0=0。//禁止 T0 運行 } } void delay_20ms(void) //延時 20ms {} void max7219_reset(void) //初始化 MAX7219 {} void write_reg(uchar reg,uchar sdata) //寫入命令 {} void write_digit(uchar digit,uchar number) //顯示數(shù)字 {} void send_dat
點擊復(fù)制文檔內(nèi)容
環(huán)評公示相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1