新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 凌陽16位單片機(jī)之定時(shí)器中斷

凌陽16位單片機(jī)之定時(shí)器中斷

作者: 時(shí)間:2016-11-20 來源:網(wǎng)絡(luò) 收藏
首先先計(jì)算好想要的時(shí)間,基本上就是 *P_TIMEA_Data = 0xffff-你想要的時(shí)間頻率。然后*P_INT_Ctrl = 允許相應(yīng)的中斷允許接受中斷,然后__asm();

然后等到溢出的時(shí)候進(jìn)入相應(yīng)的中斷,

本文引用地址:http://2s4d.com/article/201611/318710.htm

說一下*P_INT_Ctrl的意義,他有兩個(gè)操作,一個(gè)是讀操作一個(gè)寫操作,剛開始可能只是看書理解有點(diǎn)難,其實(shí)讀操作和寫操作就是兩碼事,就像你命令一個(gè)人拿東西一樣,第一次規(guī)定了怎么拿但是下一次拿的時(shí)候就不用再告訴怎么拿了,之所以叫做讀操作是因?yàn)椴挥脤?/這句話看似是廢話但是想想還是可以的)即每次清除的不是寫操作而讀操作,

*P_TimerA_Ctrl代表開啟什么頻率的中斷,*P_TimerA_Data 是初始到溢出的位置

#include "SPCE061A.H"
unsigned Output = 0x0000;
void IRQ1()__attribute__((ISR));
void IRQ1()
{
*P_INT_Clear = 0x1000;
Output=~Output;
*P_IOA_Data=Output;
}
int main()
{
__asm("INT OFF");
*P_IOA_Dir = 0x00ff;
*P_IOA_Attrib = 0x00ff;
*P_IOA_Data = 0x0000;

*P_INT_Ctrl = 0x1000;
*P_TimerA_Ctrl = 0x000d;
*P_TimerA_Data = 0xffff-1024;
__asm("INT IRQ");
while(1)
{
*P_Watchdog_Clear=C_WDTCLR;
}
}



評論


技術(shù)專區(qū)

關(guān)閉