1. c語言匯編語言 P1口做輸出口,正常時控制八隻燈(P1口輸出低電平 時燈被點亮)每隔0.5秒全亮全
#include<reg51.h>
#defineucharunsignedchar
ucharcnt,key=0,led1=0x00;led2=0xfe;
sbitkey1=P3^6;
sbitkey2=P3^7;
voidt0isr()interrupt1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
cnt++;
cnt%=10;
if(cnt==0)
{
switch(key)
{
case0:
P1=led1;
led1=~led1;
break;
case1:
led2=_cror_(led2,1);
P1=led2;
break;
case2:
P1=led2;
led2=_crol_(led2,1);
}
}
}
main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
TR0=1;
ET0=1;
EA=1;
while(1)
{
if(key1==0)
{
while(key1==0);
key=1;
}
if(key2==0)
{
while(key2==0);
key=2;
}
}
}
2. 將匯編語言轉換成C語言,急用(用P1口做為輸出口,使發光二極體從右到左輪流循環點亮,)
貌似程序和你描述的不一樣呢?應該是按下左鍵左燈亮,按下右鍵游等亮吧。
大概應該是這樣吧,應該有的地方根據你的環境還需要改改。
#include <reg51.h>
#define KEYLEFT P1.0
#define KEYRIGHT P1.1
#define LEDLEFT P0.2
#define LEDRIGHT P0.3
int main()
{
unsigned char c;
KEYLEFT = 1;
KEYRIGHT = 1;
while(1)
{
c = KEYLEFT;
LEDLEFT = c;
c = KEYRIGHT;
LEDRIGHT = c;
}
return 0;
}
3. 單片機p1口輸出數據和地址。怎麼用c語言來編寫。有地址和數據所存器。
兩種方式,1,先位定義:sbit
a=p1^0;
表示a就代表p1.0口了,然後其它口也這么干,然後挨個幅值。2,直接用十六進制數給p1口幅值,比如0123接地,4567是高電平,直接寫p1=0x0f;就行了。
讀也可以直接用a=p1就行啊,提前定義好a的格式就行
4. c語言編制!!!!用P1口的工作原理,讓P1口接8隻發光二極體,使用各種方法實現某一隻或幾只發光二極體亮或滅
好簡單啦。P1有八條I/O線嘛,一條各接一個LED的負極,每個LED正極串一個510歐姆電阻接Vcc。程序:設P1為輸出口,寫一個8位數到P1,每一位對應一個LED,寫「0」點亮LED,寫「1」關上LED。比如:寫P1「11111101」就點亮第二個LED。
5. 1、P1 口做輸出口,接八隻發光二極體,編寫程序,使發光二極體循環點亮。
#include <reg51.h>
#define LED P1 //宏定義,使用LED代替P1口(相當於LED=P1)
#define uchar unsigned char //用uchar代替unsigned char方便操作
#define uint unsigned int
/*------------------time ms延時函數-----------------*/
void delay_ms(uint time)
{
uchar tres;
for(;time>0;time--)
{
tres=150;
while(tres--);
}
}
void main()
{
uchar t;
LED=0X01;//P1=00000001B
while(1)//死循環,不停的點亮和熄滅LED
{
for(t=0;t<8;t++)
{
LED=~LED;//按位取反,點亮一個LED
delay_ms(100);//延時0.1s
LED=~LED;//按位取反
LED<<=1;//左移一位,點亮不同的LED
}
LED=0X80;//P1=10000000B
for(t=0;t<8;t++)
{
LED=~LED;//按位取反,點亮一個LED
delay_ms(100);//延時0.1s
LED=~LED;//按位取反
LED>>=1;//右移一位,點亮不同的LED
}
LED=0X01;//P1=00000001B
}
}
6. 求51單片機P1口輸入實驗C語言版程序。
//P2接74ls273
D0~7
//P3.0
接
74ls273
clk
引腳
//P3.0
接
WR
#include
<reg52.h>
//52系列單片機頭文件
sbit
CLK=P3^0;
sbit
WR=P3^1;
void
main()
//主函數
{
CLK=0;
WR=1;
while(1)
//大循環
{
unsigned
int
time=10;
P2=P1;
//P2直接
讀取
P1數值
CLK=1;
while(time--);
CLK=0
}
}
試試
估計差不多
7. 單片機C語言中,如何讀取P1口的數據,並將P1口讀入的數據送到P0口輸出
你這個程序是對的。但是有一點忽略了:
P1口作為輸入口,應該先置為ff
完整程序:
while(1)
{
P1=0xff;//這個就是忽略的地方
i=P1;
P0=i;
}
另外,下面這個也可以,以經過軟體模擬通過。
P1=P0;
8. 12用C語言編製程序實現51單片機的P1口輸出高電平
摘要 很高興為您解答親 以標准51單片機為例:
9. 單片機p1口拓展8255a用C語言怎麼寫程序啊8255A口是輸出B口是輸入C口下半部輸出
P1口拓展8255寫程序不如用P0口方便,因為P0是數據匯流排,有專門的讀寫指令,P1口的話,只能先使能8255,選擇ABC口,再讀或寫P1,比較麻煩的。