# include & lt單片機模型頭文件>
# include & ltintrins.h & gt
#定義uint無符號整數
#定義uchar無符號字符
void delay();
void main()
{
uchar temp = 0xfe
while(1)
{
Px=temp //x表示妳的單片機連接了幾個端口p,如果連接到端口P1,就是P1。自己修改吧。
delay();
Px=_crol_(temp,1);
}
}
Void delay() //程序延遲
{
uint i,j;
for(I = 1000;我& gt0;我-)
for(j = 110;j & gt0;j-);
}
}
編譯是:
1.實驗任務
開關K1接P3.2引腳,1個led接AT89S51單片機的P0.0端口。通電時,連接到P1.0引腳的led亮,按壹次開關K1,燈滅。
2.系統板上的硬件連接
將“單片機系統”區的P3.2端口連接到“獨立鍵盤”區的K1端口;將P0.0連接到L1。
3.程序設計方法
(1.設計思想的起源
在我們的生活中,我們很容易把這個叫張三,那個叫李四,另壹個叫王五。那是因為每個人的名字都不壹樣,我們很快就認出來了。同樣,對於每壹個要用壹個鍵來標識的不同功能,我們用不同的ID號來標識每壹個不同的功能模塊,這樣每按壹次鍵,ID值都是不同的,這樣單片機就很容易識別不同功能的身份。
(2)設計方法
從上面的需求可以看出,L1是由開關K1控制的,我們為L1定義了不同的ID號。L1開時,ID = 0;當L1關閉時,ID = 1;我們可以通過分別給不同的ID號來完成上述任務。
4.匯編程序:
ID EQU 30H
K1位P3.2
L1位P0.0
ORG 0000H
CLR P1.7
MOV身份證,#00H
發車:JB K1,REL;K1未關閉。
LCALL delay 10MS;K1關閉,抖動消除延遲。
JB K1,REL:重新判決
公司ID
MOV,身份證
REL 02號CJNE A
MOV身份證,#00H
REL: JNB K1,$;等待開關彈出。
MOV,身份證
CJNE A,#00H,IS0判斷對應的ID
Clr l1: id = 0,燈亮。
l呼叫延遲燈;耽擱
SJMP起點
IS0: CJNE A,#01H,START
SETB L1
LCALL延遲
SJMP起點
DELAY10MS: MOV R6,# 20;延時10MS子程序
LOOP1: MOV R7,#248
DJNZ R7美元
DJNZ R6,LOOP1
浸水使柔軟
延時:MOV R5,# 20;延遲20毫秒子程序
環路2: LCALL延遲10毫秒
DJNZ R5,環路2
浸水使柔軟
結束