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