JTAGICE mkII 或是 AVR單片機(jī) 的問題
程序 見 附錄,出現(xiàn)的問題是:當(dāng) 代碼 如附錄所寫 時,程序 運(yùn)行正常,當(dāng) 把 函數(shù)func()中的代碼 直接放到while(1)中,即如下:(原程序 是 用 func() 代替了 幾行代碼)
while(1)
{
atimer = 0; //清1ms定時標(biāo)志
atmp = (aclock)/2;
if (anum!=atmp )
{
anum = atmp;
atimer = 1; //置1ms定時標(biāo)志
}
if(atimer == 1)
{
PORTA=~PORTA;
}
}
此時,程序 不正常。單步調(diào)試 時,程序指針 不會 指向 atimer=0、atmp 這兩行,也就是說 這兩行 不被 CPU 執(zhí)行。經(jīng)過我 反復(fù)驗(yàn)證,確實(shí)如此。
附錄:
#include <avr/io.h>
#include interrupt.h>
#include
unsigned int atmp;
unsigned int atimer;
unsigned int anum;
unsigned int aclock;
void func();
int main(void)
{
DDRA=0xFF; //將PA口接到LED上觀察現(xiàn)象。
PORTA=0x00;
TCCR1A=0x00;
TCCR1B=(1<
TCNT1=58162;
TIMSK=(1<
asm("SEI");
while(1)
{
func();
if(atimer == 1)
{
PORTA=~PORTA;
}
}
}
void func()
{
atimer = 0; //清1ms定時標(biāo)志
atmp = (aclock)/2;
if (anum!=atmp )
{
anum = atmp;
atimer = 1; //置1ms定時標(biāo)志
}
}
ISR(TIMER1_OVF_vect,ISR_BLOCK)
{
TCNT1=58162; //1024分頻下延時2S.
aclock++;
if(aclock==100)
aclock=0;
}
關(guān)鍵詞:
JTAGICEmkIIAVR單片
相關(guān)推薦
技術(shù)專區(qū)
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機(jī)
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線
- 開關(guān)電源
- 單片機(jī)
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩(wěn)壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機(jī)控制
- 藍(lán)牙
- PLC
- PWM
- 汽車電子
- 轉(zhuǎn)換器
- 電源管理
- 信號放大器
評論