1. 飛思卡爾單片機怎樣將具有中斷功能的T口定義為普通I/O口使用
直接初始化IO即可。
如:
DDRT
=
0xff;//設置T口為輸出
PTT=0xff;//八個口全部輸出高電平
同樣,要設為輸入可參考下面:
DDRT=0x00;
//設置T口為輸入
a=PTT;
//將T口的值賦值給變數a
2. 飛思卡爾單片機MC9s12xs128的中斷周期定時器的關閉問題
是在做飛思卡爾智能車么,可以去飛思卡爾論壇問
說一下我的理解:
我以前也用過這個晶元,有一次是用它做超聲波測距,要用輸入捕捉來測高電平持續時間,就用了裡面的一個計時器來計時高電平持續時間,記得當時在datasheet里看到這樣一句話:晶元內部的時鍾的值是不能夠被改變的,就是read-only。所以使能關閉可能也只是關閉中斷,溢出時不會中斷,而不是關閉計時器的工作
3. 飛思卡爾16位單片機 中斷優先順序怎麼設置
1、在專家模式的相關Bean的屬性裡面有個優先順序設置選項,設為最高優先順序就可以了。
2、否則查看數據手冊的寄存器。
4. 飛思卡爾中斷流水燈怎麼編寫程序。求助大佬
51單片機用匯編語言編寫流水燈程序,就是控制多個LED ,使其在特定時間間隔內,只有一個LED 發光,其他熄滅,用這種方式順序移動點亮LED的位置,就形成了流水燈的效果。以下是程序:;假設晶振12MHZ,P1控制8個LED低電平亮;啟動入口========================ORG 0000H ;復位啟動AJMP START ;ORG 001BH ;T1中斷AJMP T1INT ;;定義變數========================YSJS EQU 30H;延時計數器LED EQU 31H;LED控制緩沖器;主程序==========================START: MOV LED,0FEH ;初始化數據MOV YSJS,0 ;;MOV TMOD,10H ;定時器1工作於方式1,16位定時器MOV TL1,0B0H ;設置定時初值MOV TH1,3CH ;定時時間=50mSSETB ET1 ;使能定時器1中斷SETB TR1 ;啟動定時器1SETB EA ;開總中斷MOV P1,LED ;初始化流水燈;LOOP: JMP LOOP ;循環等待中斷;;T1INT: PUSH PSW ;定時器1中斷程序PUSH ACC ;保護現場;MOV TH1,3CH ;定時時間=50mSMOV TL1,0B0H ;INC YSJS ;PUSH ACC ;保護ACCMOV A,YSJI ;CJNE A,2,QT1 ;50mS*2=100mSMOV P1,LED ;MOV A,LED ;RL A ;累加器A的值循環左移1位MOV LED,A ;MOV YSJS,0 ;;QT1: POP ACC ;恢復現場POP PSW ;RETI ;返回主程序END ;匯編程序結束
5. 飛思卡爾單片機串口中斷
如果是模擬, 得先虛擬串口對才行
如果是下到單片機中, 你看看你數據緩沖區有沒有問題
我不懂C
6. 飛思卡爾單片機中的行中斷,場中斷不太理解,請幫我詳細解釋!謝謝了!
你問的是攝像頭的相關中斷吧,是這樣的,攝像頭採集數據是一行一行採集的,當採集完一行的圖像之後就觸發行中斷信號,比如360*240的像素,總的240行,當240行全部採集完了之後就觸發場中斷,所謂的場就是整張圖像全部採集。。。
7. 飛思卡爾9s12xs128中的中斷函數應該怎樣聲明其中的中斷號是根據什麼確定的
#pragma CODE_SEG __NEAR_SEG NON_BANKED //中斷函數置於非分頁區內
interrupt VectorNumber_Vtimch7 void ICU_Ch7Int(void)
{
TFLG1_C7F = 1; //清中斷標志位
}
#pragma CODE_SEG DEFAULT //後續代碼置於默認區域內
我一般是用上述方式聲明中斷函數。
由於飛思卡爾16位單片機的中斷向量是16位,所以中斷函數只有被置於非分頁區內才能被定址到,這就是第一行的作用。
第二行中「VectorNumber_Vtimch7」是中斷號,它是由文件「MC9S12XS128.h」中定義的宏,這個中斷號在它的技術手冊中找到,但是我建議你採用這種宏的形式,因為這個宏不容易出錯,可讀性較高,比如「VectorNumber_Vtimch7」即為定時器(TIM)通道7(CH7)所對應的中斷號。中斷函數名「ICU_Ch7Int」可任意取,沒有影響。
由於單片機內部非分頁區大小有限,非中斷函數一般置於分頁區內,最後一行即為此作用。
8. 單片機中斷的問題
那個8是中斷類型碼,在機器中有一個中斷向量表,其中保存著中斷服務程序的入口地址。機器為每一個中斷源分配一個編碼,稱為中斷類型碼,它與中斷向量表中的每一項一一對應,當有中斷源請求時,中斷源會同時送出中端類型碼,處理器根據這個類型碼去查找中斷向量表,獲得對應的中斷服務程序的入口地址,轉而執行中斷服務程序!!
9. 飛思卡爾單片機s12xs128中斷在full chip simulation 中可以進入中斷,下載進單片機就進不了中斷了……
中斷進不了可能是清楚標志位那裡的問題,你一定是同時開了不止一個的PIT定時中斷。
你試著在清楚標志位的時候不要直接寫PITTF_PTF1=1;
而是換成PITTF =0x02; 其他的定時器中斷標志清楚也是一樣,這樣你試試看,肯定可以進中斷了
10. 你好,請問I/O口中斷怎樣計次(飛思卡爾單片機)
/*******************************************************
* 程序名稱:main.c
* 程序功能:主程序文件
* 程序作者:吳鑒鷹
* 創建時間:2014-3-10
* 修改時間:
* 程序版本:V0.1
******************************************************/
/*
* 包含的頭文件
*/
#include "reg51.h"
//#include "intrins.h"
/*
* 定義引腳
*/
/* 時鍾信號線引腳定義 */
sbit HC595CLK = P0^5;
/* 片選信號線引腳定義 */
sbit HC595RCK = P0^6;
/* 數據輸入引腳定義 */
sbit HC595DATA = P0^7;
/* 存儲待發送的數據 */
code unsigned char ucDataOneTab[16] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};
code unsigned char ucDataTwoTab[16] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01, 0x02, 0x04, 0x08, 0x10, 0x20,0x40,0x80};
//code unsigned char ucDataOneTab[16] = {0x01, 0x02, 0x04, 0x08, 0x10, 0x20,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,};
//code unsigned char ucDataTwoTab[16] = {0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80, 0x40, 0x20, 0x10, 0x08, 0x04,0x02,0x01};
/******************************************************
* 函數名稱:SendData
* 函數功能:74HC595數據的發送
* 入口參數:unsigned int uiDataOne, unsigned int uiDataTwo
* 出口參數:void
*******************************************************/
void SendData(unsigned int uiDataOne, unsigned int uiDataTwo)
{
unsigned char i = 0;
/* 將片選信號置為低電平 */
HC595RCK = 0;
/* 輸入第一個數據:uiDataOne */
for (i = 0; i < 8; i++)
{
/* 給出脈沖信號,首先將CLK置為0 */
HC595CLK = 0;
if (0 != (uiDataOne & 0x80))
{
HC595DATA = 1;
}
else
{
HC595DATA = 0;
}
/* 給出脈沖信號,首先將CLK置為1 */
HC595CLK = 1;
/* 准備第二個數據 */
uiDataOne = uiDataOne << 1;
}
/* 輸入第二個數據:uiDataTwo */
for (i = 0; i < 8; i++)
{
/* 給出脈沖信號,首先將CLK置為0 */
HC595CLK = 0;
if (0 != (uiDataTwo & 0x80))
{
HC595DATA = 1;
}
else
{
HC595DATA = 0;
}
/* 給出脈沖信號,首先將CLK置為1 */
HC595CLK = 1;
/* 准備第二個數據 */
uiDataTwo = uiDataTwo << 1;
}
/* 將片選信號置為高電平 */
HC595RCK = 1;
}
/***********************************************
* 函數名稱:Delay1ms
* 函數功能:延時函數
* 入口參數:
* 出口參數:
***********************************************/
void Delay1ms(int i)
{
int j;
for(; i > 0; i--)
{
for(j = 0; j < 110; j++);
}
}
/******************************************************
* 函數名稱:main
* 函數功能:主函數
* 入口參數:void
* 出口參數:
*******************************************************/
void main()
{
unsigned int i;
while (1)
{
//for (i = 0; i < 16; i++ ) //改成16個依次亮i<8改成i<16
{
SendData(ucDataOneTab[1], ucDataTwoTab[0]);
//Delay1ms(1000);
}
}
//return 0;
}