C51微控制器程式設計

時間 2021-08-30 10:29:12

1樓:匿名使用者

#include

#define uchar unsigned char#define uint unsigned intsbit high_key=p1^0;

sbit low_key=p1^1;

sbit led=p2^0;

sbit speak=p2^1;

uint count;

void delay(uint x)

uchar j;

while(x--)

for(j=0;j<125;j++)

void main(void)

high_key=0;

low_key=1;

led=speak=0;

while(1)

if(high_key==1)

delay(10);

if(high_key==1)

led=1;

if(low_key==0)

delay(10);

if(low_key==0)

led=0;

count++;

if(count==8)

count=0;

speak=1;

delay(100);

speak=0;

delay(100);

speak=1;

delay(100);

speak=0;

delay(100);

2樓:匿名使用者

要路圖,,,可以用計數的方式(當連續出現8個低電平輸入微控制器時),當計數到8時,給接嗽的引腳傳送一個高電平,延遲100ms再傳送一個低電平

3樓:匿名使用者

你要用兩組io 嗎?

用一組也行 因為io內部整合上拉(非p0)你可以用硬體的現實的方式做第一個問題,因為你是說輸入高會亮 那就就把二極體的正端接到你的輸入量的引腳上 和io 並有一起 然後把io 一直拉低 就等著你的輸入量拉高的時候 等就會亮 就想檢測按鍵一樣 。

對於第二個問題 你可以寫程式 (但我還是不懂你說的連續什麼意思)微控制器處理時間很小小 這裡不能沒沒有時間差 )因為人的輸入肯定會有時間差 你在相應延時一下再檢測的輸入量是否是符合你的連續 就編個有源驅動程式驅動喇叭就行了!

4樓:匿名使用者

led bit p1.0

key bit p1.4

speaker bit p1.7

lowcnt equ 30h

org 0000h

ljmp main

org 0030h

main:

mov lowcnt,#0

loop:

jb key,loop1

setb led

jnb key,$

inc lowcnt

mov a,lowcnt

cjne a,#8,loop1

mov lowcnt,#0

lcall fmq

sjmp loop

loop1:

clr led

sjmp loop

fmq:

clr speaker

mov r2,#200

dly:

mov r3,#250

djnz r3,$

djnz r2,dly

retend

5樓:擾龍冠玉

現場寫給你吧:

org 0000h

ajmp main

org 0030h

main:

mov sp,#40h

mov a,p1

jnb p1.0,j1

jbajmp main

j1:setb p2.0

int r0

cjnz r0,#08h,j3

mov r0,#00h

retj2:

clr p2.0

retj3:

mov r5,#64h

loop:

cpl p2.1

acall delay

djnz r5,loop

mov r5,#64h

retdelay:

mov r7,#0ffh

mov r6,#64h

de1:nop

de2:nop

djnz r6,de2

djnz r7,de1

retend

6樓:匿名使用者

高手啊 俺不會彙編

7樓:九日木水

這個程式很好寫的啊

把io口定義一下,但是不知道你是檢測一個口還是迴圈檢測好幾個口

要是一個口的話,吧檢測到的訊號給計數口,然後中斷輸出一個脈衝給喇叭就可以啦

8樓:匿名使用者

你問題說得不清 連續八個 時間間距是多少 硬體電路呢? 都沒有程式怎麼寫

微控制器C51程式設計兩個問題(裡面詳細,歡迎高手)

問題一 為什麼說delay 500 就是延時0.5s呢?是估算的.c 不能精確定時,通過調節 for j 0 j 125 j 的 125的數值.取125剛好接近 1ms.我就做了好幾個 20us,1ms,1s,的delay程式.把他們執行很多次後,用秒錶核對.1ms 程式也是用的125 這個值,很接...

c51微控制器中斷程式中的interrupt1,2,3是由什麼決定的

衛戍邊疆 中斷是由於某種事件的發生 硬體或者軟體的 計算機暫停執行當前的程式,轉而執行另一程式,以處理髮生的事件,處理完畢後又返回原程式繼續作業的過程。中斷是處理器一種工作狀態的描述。1 int0 外部中斷0,由p3.2埠引入,低電平或下降沿引起。預設優先順序最高。2 int1 外部中斷1,由p3....

c51微控制器請問這句如何理解

你呼叫函式的時候delay 200 會有個延時時間,如果你的延時是是200,200就被賦值給z 然後再把z賦值給x 所以x就是200的值,若你把函式該成delay 400 那麼應該x就等於400.z 是呼叫該子函式時賦值的,如 delay 200 for x z x 0 x 是 賦值 x z 如果 ...