Ⅰ 用keil和Jlink進行對stm32進行硬體模擬,在模擬界面中怎樣看IO口狀態(就是怎樣調出IO口的寄存器)
對,Keil在硬體模擬的時候不能觀測IO口狀態,但是可以查看內存狀態
Ⅱ 怎麼在模擬情況下知道單片機I/O口是高阻狀態
i/o口狀態的設置要通過對相應的寄存器做設置,也就可以在模擬時通過觀察對應寄存器的值來確定i/0口的狀態,是高阻輸入、開漏極輸出,准雙向口等。
Ⅲ C8051F系列單片機如何檢測IO口(P13)邊沿觸發變化
我不止一次遇到騙子,得了答案走人了,分數只是誘餌。我不在意分數,但會有一種被人耍了的感覺。希望你不是那樣的人。
C8051F系列是一款功能豐富、使用靈活的單片機,交叉開關是它的一個特色,為布板、編程提供了方便性。正因為靈活,初次使用或有些不適應。
就你的具體問題,傳統單片機只有一種方法---查詢。C8051F就不同了,有多種方法實現,查詢、外部中斷、埠比較中斷、計數器中斷都可以,對速度要求不高還可以使用ADC中斷。這些你深入了解後會覺得C8051F真的很強大,要多看手冊才能深入領會。
這里給你一種最簡單的,查詢方法。
//引用外部頭文件
#include "..\config\c8051f350.h"
void main(void)
{
P1MDIN = 0XFF; //埠1輸入方式配置寄存器,全部不配置為模擬輸入
P1MDOUT = 0X00; //埠1輸出方式配置寄存器,全部配置為漏極開路輸出
P1 = 0XFF;
XBR0 = 0X00; //埠I/O 交叉開關控制0,外設不連接引腳
XBR1 = 0X40; //埠I/O 交叉開關控制1,交叉開關使能,弱上拉使能
while(1)
{
if (P1^3 = 0) //檢查P1.3下降沿
{
//這里放入你要執行的程序
while(!P1^3) //等待上升沿
}
}
}
Ⅳ 單片機怎樣檢測IO口電壓變化
要想檢測電壓,必須要單片機帶AD功能,AD功能會把電壓模擬信號轉換成數字信號!然後單片機做相應的判斷!
Ⅳ 單片機IO口檢測和輸出控制自動化代替機械按鍵
我們這邊有個芯聖公司的HC18P23xL系列的晶元能滿足你說的功能需求,功能比AT89C51強大,價格更具優勢。代碼如下:
void main()
{
ANSELL=0X01; //1=AD(simulation models)0=I/O(digital models)
ANSELH=0X00; //1=AD(simulation models)0=I/O(digital models)
TRISA=0X03; //1 input,0 output 設置PORTA0 PORTA1為檢測輸入口,PORTA2 PORTA3 PORTA4 PORTA5為輸出口
PORTA=0X02; //1 high , 0 low
WPUA=0XFD; //1 disenable high pull ,0 enable high pull 設置 PORTA1開啟內部上拉電阻
WPDA=0xfE; //1 disenable down pull ,0 enable down pull 設置PORTA0 開啟內部下拉電阻
PORTA2 = 1;
PORTA3 = 0;
PORTA4 = 1;
PORTA5 = 0;
while(1)
{
if (PORTA0 == 1)
{
Delay100ms(50);
PORTA2 = 0;
PORTA3 = 1;
Delay100ms(1);
PORTA2 = 1;
PORTA3 = 0;
}
if (PORTA1 == 0)
{
Delay100ms(50);
PORTA4 = 0;
PORTA5 = 1;
Delay100ms(1);
PORTA4 = 1;
PORTA5 = 0;
}
}
}
void Delay100ms(unsigned char i)
{
int j;
while(i--)
{
for(j = 0;j<2500;j++);
}
}
可購買晶元驗證。就要求所述定義的檢測部分存在現有軟體定義了PORTA0檢測高電平,延時5秒鍾,PORTA2輸出低,PORTA3輸出高,持續100毫秒,恢復PORTA2輸出高,PORTA3輸出低。
PORTA1檢測低電平,延時5秒鍾,PORTA4輸出低,PORTA5輸出高,持續100毫秒,恢復PORTA4輸出高,PORTA5輸出低。
Ⅵ 如何用51單片機檢測5個IO口的信號變化
如果用P2口,可以用P1口的6個IO口,外接開關集成電路,用P2口的輸出控制模擬開關,用P1的6口檢測。給一個高電平,檢測一個,依次循環。
Ⅶ 怎麼檢測單片機io口狀態
可以用萬用表電壓檔測量,也可以連接LED通過發光與否進行判斷。
Ⅷ stm32單片機按鍵檢測io口應該怎麼設置
IO口的輸入輸出是通過對單片機寄存器的配置來實現的。C51的單片機IO口本來就是雙向的不需要設置。STM32單片機的IO口用C語言的設置方法如下:voidLED_Config(void){GPIO_InitTypeDefGPIO_Structure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//PC10-LED(指示燈)GPIO_Structure.GPIO_Pin=GPIO_Pin_10;GPIO_Structure.GPIO_Speed=GPIO_Speed_2MHz;GPIO_Structure.GPIO_Mode=GPIO_Mode_Out_PP;GPIO_Init(GPIOC,&GPIO_Structure);//LED}
Ⅸ 如何自動檢測51單片機I/O口變化
因為IO口作為輸入時初始被置1, 這樣就可以被外部器件拉低, 檢測IO口的電平高低就可以知道有沒有被外部器件拉低了
如果IO口置0的話, 那麼外部器件無論是高電平還是低電平, IO口都是0, 就沒法檢測了
Ⅹ 如何用C檢測單片機IO口電平變化
這個嘛!你是要用定時器定時還是用軟體延遲呢?
這么短的時間就軟體延遲好了。
首先,你要知道你的單片機是多大的晶振,然後指令周器是等於多少個機器周期。個樣才能算出一條指令的執行時間。首先,你用C寫的,到底他編譯出來的匯編語句是什麼也要搞清楚。不然,就像一個while(i!=0)i--;這個的語句不同的編譯器編出來是不同的!!有的很簡潔就是DZJN,有的很長的。
就是用C寫延時,必須用示波器看到底是多少。
unsigned int i
bit flag = 0;
while(1)
{
if(P00=1)
{
i=XXXX;//0.1ms
while(i>0)
{
i--;
if(P00!=1)break;
}
if(i==0)
{
i=YYY; //在YYY時間必須出現低電平,不然上面測到的1就不算了。
while(i>0)
{
i--;
if(P00 = 0)
{
i=ZZZ;//0.23ms
while(i>0)
{
i--;
if(P00!=0)break;//退出WHILE
}
if(i==0) flag = 1;
}
}
}
}
XXXX,YYY,ZZZ要你自已想了