?? main.bak
字號:
/**********************************************************************************************
*.* file
作者:Computer-lov
建立日期:2006-*-*
修改日期:2006-*-*
版本:V*.*
版權所有,盜版必究。
任何技術問題可到我的博客上留言: http://computer00.21ic.org
Copyright(C) Computer-lov 2006-2016
All rights reserved
**********************************************************************************************/
#include <ADuC7027.H>
#include <../my_type.h>
#include <../LED.H>
#include "interrupt.h"
volatile uint32 pll_lock;
/*********************************************************************************************/
void sys_clk_init(void)
{
PLLKEY1=0xAA;
PLLCON=0x01; //PLL配置
PLLKEY2=0x55;
POWKEY1=0x01;
POWCON=0x00; //CPU時鐘配置為41.78MHz
POWKEY2=0xF4;
// while(!(PLLSTA & 0x01));
}
///////////////////////////////////////////////////////////////////////////////////////////////
/*********************************************************************************************/
void IRQ_Handler(void) __irq //IRQ中斷服務程序
{
if(IRQSTA & EXTERNAL_IRQ0) //讀取IRQ中斷狀態(tài),判斷IRQ中斷源
{
ON_LED4();
return;
}
}
///////////////////////////////////////////////////////////////////////////////////////////////
/*********************************************************************************************/
void FIQ_Handler(void) __fiq //FIQ中斷服務程序
{
if(FIQSTA & EXTERNAL_IRQ1) //讀取FIQ中斷狀態(tài),判斷FIQ中斷源
{
ON_LED5();
return;
}
}
///////////////////////////////////////////////////////////////////////////////////////////////
/*********************************************************************************************/
void SWI_0(void) __swi(0) //0號軟中斷,打開LED6
{
ON_LED6();
}
///////////////////////////////////////////////////////////////////////////////////////////////
/*********************************************************************************************/
void SWI_1(void) __swi(1) //1號軟中斷,打開LED7
{
ON_LED7();
}
///////////////////////////////////////////////////////////////////////////////////////////////
/*********************************************************************************************/
uint32 SWI_2(uint32 a,uint32 b) __swi(2) //2號軟中斷,實現(xiàn)兩個整數(shù)相加
{
return a+b;
}
///////////////////////////////////////////////////////////////////////////////////////////////
/*********************************************************************************************/
void main(void)
{
sys_clk_init();
EN_LED4(); //使能LED
EN_LED5();
EN_LED6();
EN_LED7();
EN_LED8();
OFF_LED4(); //初始化關掉LED
OFF_LED5();
OFF_LED6();
OFF_LED7();
OFF_LED8();
SWI_0(); //用軟中斷的方法來打開LED6
SWI_1(); //用軟中斷的方法來打開LED7
if(SWI_2(100,200)==300) //調(diào)用軟中斷,計算100加200,如果結果等于300,則點亮LED8
{
ON_LED8();
}
IRQEN |= EXTERNAL_IRQ0; //將外部中斷0配置成IRQ中斷(按鍵S4)
FIQEN |= EXTERNAL_IRQ1; //將外部中斷1配置成FIQ中斷(按鍵S3)
while(1) //由于是高電平觸發(fā)中斷,所以要同時按住S4、S3鍵才能運行主程序,即熄滅LED
{ //放開某個按鍵,則進入相應的中斷,點亮相應的LED。由于FIQ的優(yōu)先級高于IRQ,
OFF_LED4(); //當先放開S4,后放開S3時,F(xiàn)IQ可中斷IRQ,從而能點亮LED5。相反,如果先放開
OFF_LED5(); //S3,后放開S4,則IRQ不能中斷FIQ,所以不能點亮LED4。
}
}
///////////////////////////////////////////////////////////////////////////////////////////////
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -