当前位置:首页 > 嵌入式实习报告
rINTMOD = 0x0; //All=IRQ mode //
//Non-vectored,IRQ enable,FIQ disable
rINTMSK = BIT_ALLMSK; //All interrupt is masked.
rINTSUBMSK = BIT_SUB_ALLMSK; //All sub-interrupt is masked. <- April 01, 2002 SOP
// rINTSUBMSK = ~(BIT_SUB_RXD0); //Enable Rx0 Default value=0x7ff
// rINTMSK = ~(BIT_UART0); //Enable UART0 Default value=0xffffffff // }
//=================================================================== void HaltUndef(void) {
Uart_Printf(\ while(1); }
24
rINTCON=0x5;
pISR_UART0=(unsigned)RxInt;
//pISR_FIQ,pISR_IRQ must be initialized
//=================================================================== void HaltSwi(void) {
Uart_Printf(\ while(1); }
//=================================================================== void HaltPabort(void) {
Uart_Printf(\ while(1); }
//=================================================================== void HaltDabort(void) {
Uart_Printf(\ while(1); }
25
//=================================================================== 4.ARM简单指令集 ADC : 带进位的加法 (Addition with Carry)
ADC{条件}{S}
dest = op_1 + op_2 + carry
ADC 将把两个操作数加起来,并把结果放置到目的寄存器中。它使用一个进位标志位,这样就可以做比 32 位大的加法。下列例子将加两个 128 位的数。 128 位结果: 寄存器 0、1、2、和 3 第一个 128 位数: 寄存器 4、5、6、和 7 第二个 128 位数: 寄存器 8、9、10、和 11。 ADDS R0, R4, R8 ; 加低端的字 ADCS R1, R5, R9 ; 加下一个字,带进位 ADCS R2, R6, R10 ; 加第三个字,带进位 ADCS R3, R7, R11 ; 加高端的字,带进位 如果如果要做这样的加法,不要忘记设置 S 后缀来更改进位标志。 ADD : 加法 (Addition)
ADD{条件}{S}
26
dest = op_1 + op_2
ADD 将把两个操作数加起来,把结果放置到目的寄存器中。操作数 1 是一个寄存器,操作数 2 可以是一个寄存器,被移位的寄存器,或一个立即值:
ADD R0, R1, R2 ; R0 = R1 + R2 ADD R0, R1, #256 ; R0 = R1 + 256 ADD R0, R2, R3,LSL#1 ; R0 = R2 + (R3 << 1) 加法可以在有符号和无符号数上进行。 AND : 逻辑与 (logical AND)
AND{条件}{S}
dest = op_1 AND op_2
AND 将在两个操作数上进行逻辑与,把结果放置到目的寄存器中;对屏蔽你要在上面工作的位很有用。 操作数 1 是一个寄存器,操作数 2 可以是一个寄存器,被移位的寄存器,或一个立即值:
AND R0, R0, #3 ; R0 = 保持 R0 的位 0 和 1,丢弃其余的位。
AND 的真值表(二者都是 1 则结果为 1): Op_1 Op_2 结果
0 0 0 0 1 0 1 0 0 1 1 1
27
共分享92篇相关文档