AVR單片機C語言的使用特點
PORTX和PINX的使用區別
AVR單片機每組I/O口有3個8位寄存器,分別是DDRx、PORTx和PINx;
DDR用于控制I/O口的輸入輸出方向:
DDRx=1時,I/O口輸出,PORTx=1時輸出高電平,PORTx=0時輸出低電平,
DDRx=0時,I/O口輸入,這時要讀取外部管腳的電平就應讀取PINx中的數值,而不是PORTx;
PORTx是數據寄存器,而PINx不能稱為真正意義上的寄存器,更像是一個可控的三態口
引用 幾種單片機C語言的中斷程序寫法
本文引用自Ajiao《幾種單片機C語言的中斷程序寫法》
引用
Ajiao的 幾種單片機C語言的中斷程序寫法
Keil C51編譯器:
void intfunc (void) interrupt m using n
{
......
}
其中:intfunc----函數名稱 interrupt----專門定義中斷函數的關鍵字 m----中斷向量編號(0~N)n----在中斷中用的寄存器組(0~1)
IAR msp430C編譯器
#pragma vector = xx
void intfunc(void)
{
.........
}
其中:intfunc----函數名稱 xx是中斷向量地址
ICC AVR C編譯器
#pragma interrupt_handler intfunc : n
void intfunc(void)
{
............
}
其中:intfunc----函數名稱 n----中斷向量編號
NC30 for Renesas R16C R8c...編譯器
方式1:
#pragma INTERRUPT [/B|/E|/V] intfunc
void intfunc(void)
{
............
}
其中:intfunc----函數名稱
方式2:
#pragma INTERRUPT [/B|/E] n intfunc
void intfunc(void)
{
............
}
其中:intfunc----函數名稱 n----中斷向量編號
方式3:
#pragma INTERRUPT [/B|/E] intfunc (vector = n)
void intfunc(void)
{
............
}
其中:intfunc----函數名稱 n----中斷向量編號
評論