導航:首頁 > 操作系統 > 單片機p1口程序

單片機p1口程序

發布時間:2024-09-29 13:07:15

A. 求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
}
}

試試 估計差不多

B. 編程:使用單片機P1口控制8個LED。顯示方式:自上而下逐個點亮,再自下而上逐個點亮,如此循環

給你個簡單點的
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN: MOV P1,#01111111B ;P1口低電平 對應燈亮 點亮P1.7對應的LED
LCALL DLY_500MS ;延時500ms 可以清晰看到每個LED的亮滅情況
MOV P1,#10111111B
LCALL DLY_500MS ;延時500ms 可以清晰看到每個LED的亮滅情況
MOV P1,#11011111B
LCALL DLY_500MS ;延時500ms 可以清晰看到每個LED的亮滅情況
MOV P1,#11101111B
LCALL DLY_500MS ;延時500ms 可以清晰看到每個LED的亮滅情況
MOV P1,#11110111B
LCALL DLY_500MS ;延時500ms 可以清晰看到每個LED的亮滅情況
MOV P1,#11111011B
LCALL DLY_500MS ;延時500ms 可以清晰看到每個LED的亮滅情況
MOV P1,#11111101B
LCALL DLY_500MS ;延時500ms 可以清晰看到每個LED的亮滅情況
MOV P1,#11111110B;點亮P1.0對應LED
LCALL DLY_500MS ;延時500ms 可以清晰看到每個LED的亮滅情況
MOV P1,#11111110B
LCALL DLY_500MS ;延時500ms 可以清晰看到每個LED的亮滅情況
MOV P1,#11111101B
LCALL DLY_500MS ;延時500ms 可以清晰看到每個LED的亮滅情況
MOV P1,#11111011B
LCALL DLY_500MS ;延時500ms 可以清晰看到每個LED的亮滅情況
MOV P1,#11110111B
LCALL DLY_500MS ;延時500ms 可以清晰看到每個LED的亮滅情況
MOV P1,#11101111B
LCALL DLY_500MS ;延時500ms 可以清晰看到每個LED的亮滅情況
MOV P1,#11011111B
LCALL DLY_500MS ;延時500ms 可以清晰看到每個LED的亮滅情況
MOV P1,#10111111B
LCALL DLY_500MS ;延時500ms 可以清晰看到每個LED的亮滅情況
MOV P1,#01111111B
LCALL DLY_500MS ;延時500ms 可以清晰看到每個LED的亮滅情況
SJMP MAIN
;延時250ms子程序
DLY_250MS:MOV R5,#5
DLY1: MOV R6,#100
DLY0: MOV R7,#250
DLY: DJNZ R7,DLY
DJNZ R6,DLY0
DJNZ R5,DLY1
RET
;延時500ms子程序
DLY_500MS:MOV R4,#2
DLY2: LCALL DLY_250MS
DJNZ R4,DLY2
RET
END

C. 用五一單片機c語言編程,p1口控制八個發光二極體,實現每隔一秒,兩兩點亮,並循環。

一、#include<reg51.h>

void delay(unsigned char Xms)//延時Xms

{

int i,j;

for(X = i; X>0; X--)

for(j=110;j>0;j--);

}

void main()

{

P0 = 0x00; //P0.0~P0.7分別接八個發光二極體,剛開始全滅

while(1)

{

delay(1000);

P0 = 0xc0;//點亮前兩個發光二極體P0.0和P0.1;

delay(1000);//延時1秒

P0 = 0x30;//點亮第三個和第四個LED

delay(1000);

P0 = 0x0c;

delay(1000);

P0 = 0x03;

}

}

二、

#include <reg52.h>

#include <intrins.h>

#define uchar unsigned char

#define uint unsigned int

uchar temp, t0, t1;

bit t2;

sbit P10 = P1^0;

void main()

{

P10 = 1;

temp = 0xfe;

P0 = temp;

P2 = 0xff;

TMOD = 0x01;

TH0 = (65536 - 50000) / 256;

TL0 = (65536 - 50000) % 256;

ET0 = 1;

EA = 1;

TR0 = 1;

while(1);

}

void timer0() interrupt 1

{

TH0 = (65536 - 50000) / 256;

TL0 = (65536 - 50000) % 256;

t0++;

if(t0 == 10) {

t0 = 0;

t1++;

if(t1 == 8) {t1 = 0; t2 = ~t2; P10 = t2;}

temp = _crol_(temp, 1);

if(t2) {P0 = temp; P2 = 255;}

else {P2 = temp; P0 = 255;}

}

}

(3)單片機p1口程序擴展閱讀:

例如:a = 3,b = 5,現交換a,b的值,這個問題就好像交換兩個杯子裡面的水,這當然要用到第三個杯子,假如第三個杯子是c,那麼正確的程序為:c = a; a = b; b = c;執行結果是a = 5,b = c = 3如果改變其順序,寫成:a = b; c = a; b =c;則執行結果就變成a = b = c = 5,不能達到預期的目的,初學者最容易犯這種錯誤。

順序結構可以獨立使用構成一個簡單的完整程序,常見的輸入、計算、輸出三步曲的程序就是順序結構,例如計算圓的面積,其程序的語句順序就是輸入圓的半徑r,計算s = 3.14159*r*r,輸出圓的面積s。

D. 單片機的P1埠輸出控制8個指示燈LED0~LED7,寫出指示燈LED0到LED7依次流水燈顯示的程序。

與你LED接法有關,輸出1 LED亮 還是輸出0 LED亮
假設輸出1 LED亮,程序如下:
#include<REG51.H>
#define uchar unsigned char
#define uint unsigned int
void delay1ms(uint i) //1ms延時程序
{

uint j;
for(;i>0;i--)
{
for(j=0;j<125;j++)
{;}
}
}
void main(void)//主程序

{
uchar i;
while(1)
{

for(i=0;i<8;i++)
{
P1=0x01<<i;
delay1ms(500);

}
}
}

閱讀全文

與單片機p1口程序相關的資料

熱點內容
程序員的圖中的亮點在哪裡 瀏覽:653
蘋果手機伺服器地址是什麼意思 瀏覽:459
雲伺服器裡面怎麼升級d盤 瀏覽:546
java文件存入資料庫 瀏覽:89
雷特字幕出現未發現加密鎖 瀏覽:768
java線程監視 瀏覽:947
無聊的程序員日常 瀏覽:803
雲伺服器ecs項目 瀏覽:23
健康證伺服器地址是什麼意思 瀏覽:196
惠普筆記本提取壓縮軟體 瀏覽:773
市政管網水準點加密 瀏覽:951
安卓底部三鍵怎麼關閉 瀏覽:649
php高效分頁 瀏覽:15
輕閱讀的伺服器的地址是什麼 瀏覽:957
得力app如何刪除設備 瀏覽:603
怎麼把伺服器卡死 瀏覽:479
ug加密的key文件 瀏覽:165
編程理論基礎 瀏覽:311
安卓boot配置文件都有什麼 瀏覽:534
數量關系排序演算法 瀏覽:184