熱門(mén): 51單片機(jī) | 24小時(shí)必答區(qū) | 單片機(jī)教程 | 單片機(jī)DIY制作 | STM32 | Cortex M3 | 模數(shù)電子 | 電子DIY制作 | 音響/功放 | 拆機(jī)樂(lè)園 | Arduino | 嵌入式OS | 程序設(shè)計(jì)
![]() |
發(fā)布時(shí)間: 2019-5-25 22:07
正文摘要:為什么實(shí)現(xiàn)不了變換呢,還有就是怎么控制P2=0x08,P2=0x04;因?yàn)橹幌胗?.2;2.3,不影響其他口,該怎么改呢 單片機(jī)源程序如下: #include<reg51.h> sbit a=P3^3; sbit b=P3^4; sfr P2M0=0xf3; sfr P2M1=0x ... |
angmall 發(fā)表于 2019-5-26 20:07 您的有點(diǎn)問(wèn)題 因?yàn)閣hile(1)跳不出循環(huán) 所以編的有點(diǎn)問(wèn)題 |
wulin 發(fā)表于 2019-5-26 14:13 謝謝 值得學(xué)習(xí) |
給你改了,對(duì)比一下就知道哪里錯(cuò)了。
|
wusir 發(fā)表于 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呢 |
不改變其它位狀態(tài)的方法 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(); } |
貌似可以引入一個(gè)中間函數(shù),通過(guò)與、或邏輯關(guān)系運(yùn)算,最終得到你想要 的結(jié)果“只想用2.2;2.3,不影響其他口” |
Powered by 單片機(jī)教程網(wǎng)