有工程代码附件可以下载

这是个汇编文件

 
  
  1. init.s  
  2.  
  3. IMPORT      Main  
  4.       
  5.        AREA |C$$code|, CODE, READONLY  
  6.        global       start  
  7.  
  8. start                 
  9.     bl        Main  
  10.       
  11.     END 

这个是C文件

 
  
  1. #define rGPFCON          (*(volatile unsigned *)(0x7F0080A0))  
  2. #define rGPFDAT          (*(volatile unsigned *)(0x7F0080A4))  
  3. #define rGPFPUD          (*(volatile unsigned *)(0x7F0080A8))  
  4.  
  5.  
  6. #define rGPNCON          (*(volatile unsigned *)(0x7F008830))  
  7. #define rGPNDAT          (*(volatile unsigned *)(0x7F008834))  
  8. #define rGPNPUD          (*(volatile unsigned *)(0x7F008838))  
  9.  
  10.  
  11.  
  12. void msDelay(int time)  
  13. {  
  14.         volatile unsigned int i,j;  
  15.         for(i = 0; i < 200000; i++)  
  16.             for(j=0; j<time; j++);  
  17. }  
  18.  
  19.  
  20. void GPIO_Init(void)  
  21. {  
  22.     rGPFCON  = rGPFCON & (~(0x1 << (31)));  
  23.     rGPFCON  = rGPFCON | (0x1 << (2*15));  
  24.     rGPFPUD  = rGPFPUD & (~(0x3 << (2*15)));  
  25.     rGPFDAT  = rGPFDAT & 0x7ffff;  
  26.       
  27.     rGPNCON = rGPNCON & (0xffffffff << (2*6));  
  28.       
  29. }  
  30.  
  31. void BeepOff(void)  
  32. {  
  33.     rGPFDAT  = rGPFDAT & 0x7fff;  
  34. }  
  35.  
  36. void BeepOn(void)  
  37. {  
  38.  
  39.     rGPFDAT  = rGPFDAT | 0x8000;  
  40. }  
  41.  
  42.  
  43. unsigned int KeyScan(void)  
  44. {  
  45.     if((rGPNDAT & 0X3f) != 0x3f)  
  46.         return 1;  
  47.     else 
  48.         return 0;  
  49. }  
  50.  
  51. void KeyTest(void)  
  52. {  
  53.     unsigned int KeyStatus;  
  54.     while(1)  
  55.     {  
  56.         KeyStatus = KeyScan();  
  57.         if(KeyStatus == 1)  
  58.         {  
  59.             BeepOn();  
  60.             msDelay(10);  
  61.             BeepOff();  
  62.         }  
  63.         else 
  64.             BeepOff();  
  65.     }  
  66. }  
  67.  
  68.  
  69. void Main(void)  
  70. {  
  71.     GPIO_Init();  
  72.     BeepOff();    
  73.     KeyTest();