本帖最后由 jiahz2019 于 2021-12-4 16:38 編輯
見笑了,用這個P0 &= 0x00純粹是偷懶,這里我是理解的。另外,對匯編也不熟悉呀,新手,前面只是學習了8051的C,還沒有獨立做過項目。 現在又遇到了一個問題,想啟用按鍵來控制LED燈的閃爍,之前學8051核的時候,可以直接位操作,取反位就可以了。這里不能直接用位操作了,不知如何下手了,下面是我整的一段,仿真不對,燈一直亮。 請再指教一二。 按鍵接口如上原理圖,
#include "cms.h"
typedef unsigned int u16; //對數據類型進行聲明定義
typedef unsigned char u8;
void delayms(u16 ms)
{
u8 i;
while(ms--)
{
for(i=0;i<120;i++);
}
}
void main()
{
P0CL = 0x20; //配置IO狀態, P0.2口設置為推挽輸出
P1CH = 0x00; //配置IO狀態, P1.4口設置為上拉輸入
u8 key,temp ;
while(1)
{
temp = P1 ; //這個變量類型定義的好像有誤
if(temp & 0x10 == 0) // 判斷按鍵是否按下
{
key++;
if(key >= 2)
{
key = 0;
}
if(key==0)
{
P0 |= 0x04;
delayms(600);
}
if(key==1)
{
P0 &= 0xFB;
delayms(600);
}
}
}
}
|