⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 partest.c

📁 ARM ADS 程序示例(源码),coprotest.c,partest.c,interrupts.c
💻 C
字号:
#include <stdio.h>

__inline void enable_IRQ(void);

volatile int globvar;
void __irq myIRQhandler(void)
{
	char *portlocn = (char *)0x123460;
	globvar = *portlocn;
}

unsigned Install_Handler( unsigned routine, unsigned *vector )
{
	unsigned vec, oldvec;
	vec = ((routine - (unsigned)vector - 0x8) >> 2 );
	vec = 0xea000000 | vec;
	oldvec = *vector;
	*vector = vec;
	return (oldvec);
}

int main( void )
{
	unsigned *irqvec = (unsigned *)0x18;
	int *loc = (int*)0x123450;
	
	Install_Handler( (unsigned)myIRQhandler, irqvec );
	
	/* ENABLE IRQs - These are disabled by default in AXD under ADS 1.1 */
	enable_IRQ();
	
	printf( "Contents of location 0x123450 = %d\n", *loc );
	
	do {
		globvar = -1;
		
		while( globvar == -1 );
		
		printf( "Character read in from text file %c\n", globvar );
	}
	while( globvar != '.' );
	return 0;
}

__inline void enable_IRQ(void)
{
  int tmp;
  __asm
  {
    MRS tmp, CPSR
    BIC tmp, tmp, #0x80
    MSR CPSR_c, tmp
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -