![]() |
發布時間: 2019-5-25 22:07
正文摘要:為什么實現不了變換呢,還有就是怎么控制P2=0x08,P2=0x04;因為只想用2.2;2.3,不影響其他口,該怎么改呢 單片機源程序如下: #include<reg51.h> sbit a=P3^3; sbit b=P3^4; sfr P2M0=0xf3; sfr P2M1=0x ... |
angmall 發表于 2019-5-26 20:07 您的有點問題 因為while(1)跳不出循環 所以編的有點問題 |
wulin 發表于 2019-5-26 14:13 謝謝 值得學習 |
給你改了,對比一下就知道哪里錯了。
|
wusir 發表于 2019-5-26 08:51 #include<reg51.h> sbit a=P3^3; sbit b=P3^4; sfr P2M0=0xf3; sfr P2M1=0xff; unsigned char code Tab[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char int_time; unsigned char second; void delay() { unsigned char i; for(i=0;i<200;i++); } void DisplaySecond(unsigned char k) { P2=0x08; P1=Tab[k%10]; delay(); P2=0x04; P1=Tab[k/10]; delay(); } void main() { second=0; while(1) { if(a==0) { second=12; } if(b==0) { second=13; } DisplaySecond(second); } } |
為什么 不能顯示12和13呢 |
不改變其它位狀態的方法 void DisplaySecond(unsigned char k) { P2&=0xf3;//清0 P2.2、P2.3 P2|=0x08;//賦值P2.2、P2.3 P1=Tab[k%10]; delay(); P2&=0xf3;//清0 P2.2、P2.3 P2|=0x04;//賦值P2.2、P2.3 P1=Tab[k/10]; delay(); } |
貌似可以引入一個中間函數,通過與、或邏輯關系運算,最終得到你想要 的結果“只想用2.2;2.3,不影響其他口” |