ATmega103单片机在跳频系统数字信号处理中的应用
ldi rx,$0aa ?;将发相关码的标志$aa通过SPI
out spdr,rx ?;送给FPGA
sei ?;开中断
ret
(3) SPI的中断程序
每次SPI发送完一字节,都要产生一个中断,以使程序跳转到SPI的中断程序。由于SPI主从机的移位寄存器可以看成是一个分布式的16 位循环移位寄存器,而且在当数据从主机移向从机的同时,数据也从从机移向主机,故在中断程序中,应首先判断SPDR中的数据是否是需要接收的数据(相关值),然后判断SPI缓冲区中的数据(相关码)是否发完,如没有,则继续发送,直到发完为止。具体程序如下:
spi_int:push xl ?;保存寄存器的值
push xh
in xl,sreg
push xl
lds xl, rcormark ?;判断是否为有效数据,“0”为有效
brne spi_2 ?不等于0,跳
in xl, spdr
sts incorbuf,
xl ?;将相关值存入incorbuf
spi_2: lds xl, spififoo ;比较缓冲区的输入,输出指针
lds sprx, spififoi
cp xl. sprx ?;
breq spiend ?;相等,则数据发完,跳
ldi xh,$9 ?;不等,则取下一个字节送入spdr
ld sprx, x+
out spdr, sprx
cpi xl, $0e0 ?;调整spififoo指针
brlo spi_0 ?;未超过缓冲区范围,跳
ldi xl, $0c2 ?;超过,将缓冲区开始地
址给spififoo
spi_0: sts spififoo,xl;
spiend:pop xl
out sreg,xl
pop xh
pop xl
reti
5 结束语
本设计方案已通过软硬件调试,结果表明:AT-mega103单片机较89C5X系列单片机在资源和功能上都有很大的提高,不但控制更加简单、灵活,而且能够节省不少外围电路,因此具有成本和体积上的优势,可完全满足跳频信号处理模块的功能要求。
《ATmega103单片机在跳频系统数字信号处理中的应用(第3页)》