![]() |
發布時間: 2018-12-21 23:00
正文摘要:基于單片機的三路搶答器的設計 設計內容: 1.具有3路搶答輸入(由獨立按鍵實現 ) 2.顯示搶答剩余時間,初始為10秒,最小量化單位為1秒; 3.搶答結束后, ... |
bit是位,怎么能賦值1,2,3呢,只能賦值0或者1兩種狀態?如果要實現多狀態,你需要設置多個標志,并且在使用完標志后,記得還原標志位。 |
1092648746 發表于 2018-12-22 10:26 bit flag; void main() { EA=1; EX0=1; IP=0X04; IT0=1; EX1=1; IT1=1; while(1); { if(flag==1) { if(m==4)m=0; P1=address[m]; P0=table1[m++];delayms(500); } if(flag==2) { if(m==4)m=0; P1=address[m]; P0=table2[m++];delayms(500); } if(flag==3) { if(m==4)m=0; P1=address[m]; P0=table3[m++];delayms(500); } } } void INT_1() interrupt 2 { EX1=0; delay(20); EX1=1; if(P2=0xfe)flag=1; if(P2=0xfd)flag=2; if(P2=0xfb)flag=3; } 我把主程序和外部中斷int1修改了一下,但還是不能亮 flag我也不是很了解,你能看看哪里出錯了嗎 |
樓主的中斷函數不要放循環,容易死機。應該在外部中斷放一個變量flag,當中斷啟動時,flag置1,主程序內放循環if判斷檢查標志位,然后放你要做的事情即可,第三點可按照上述思路改進 |