qb_0007:
單片機六人搶答器定時器0定時50ms循環(huán)20次完成定時一秒;用串行口做顯示輸出外部搶答按鈕用防抖開關(guān)用中斷做的鍵盤掃描.P1.0做燈光報警P1.1做聲音報警ORG 0000HAJMP MAINORG 0003H 定義外部0中斷AJMP INT0SEVORG 000BH 定義定時器0中斷AJMP T0SEV ORG 0030HMAIN:MOV SP, #60HMOV TMOD,#01H定義定時器T0的工作模式MOV TH0,,#3CH 給定時器賦初值MOV TL0 ,#0B0HMOV R2 , #20循環(huán)次數(shù)MOV R3 , #0個位顯示MOV R4 , #3十位顯示SETB EA開總中斷SETB ET0開定時器中斷SETB P0.0給p0.0賦初值LCALL XIANSHI調(diào)用顯示子程序CLR P1.0JB P0.0 , $LCAII K3SETB P1.0開始按鈕SETB IT0邊沿觸發(fā)方式SETB TR0開啟定時器SETB EX0開啟外部中斷JB P0.1 , $AJMP MAIN定時中斷T0SEV:MOV th0 , #3CHMOV TL0 , #0B0HDJNZ R2 , LOOPMOV R2 , #20CJNE R3 , #0 , K1CJNE R4 , #0 , K2CLR TR0CLR EACLR ET0CLR EX0AJMP LOOPK2:MOV R3 , #9DEC R4AJMP LOOPK1:DEC R3LOOP:LCALL XIANSHIRETI外部中斷服務INT0SEV:CLR EACLR TR0JNB P0.2, KEY1JNB P0.3, KEY2JNB P0.4, KEY3JNB P0.5, KEY4JNB P0.6, KEY5JNB P0.7, KEY6KEY1:MOV R3 , #1MOV R4 , #0LCALL XIANSHIRETIKEY2:MOV R3 , #2MOV R4 , #0LCALL XIANSHIRETIKEY3:MOV R3 , #3MOV R4 , #0LCALL XIANSHIRETIKEY4:MOV R3 , #4MOV R4 , #0LCALL XIANSHIRETIKEY5:MOV R3 , #5MOV R4 , #0LCALL XIANSHIRETIKEY6:MOV R3 , #6MOV R4 , #0LCALL XIANSHIRETI顯示子程序:XIANSHI:MOV SCON , #00HMOV DPTR ,#TABMOV A ,R3MOVC A , @A+DPTRMOV SBUF ,AJNB TI , $CLR TIMOV A ,R4MOVC A , @A+DPTRMOV SBUF ,AJNB TI , $CLR TIRET聲音報警K3:MOV R5 ,#50K4:MOV R6 ,#FFHK5:DJNZ R6 , K5CPL P1.1DJNZ R5 , K4RETEND