实验4.1 数码管及LED显示接口实验
下面的程序DigitalLED.asm简单的演示了对数码管和LED控制的指令,可以在显示预设的数字和LED状态。复杂的程序可以见附盘的流水灯程序,DigitalLED2.asm
;=========================================================
;DigitalLED.asm
;实验用DSP控制实验板数码管
;DSP用I/O指令对CPLD地址1000-10005写数据,分别对应Digtal0-5
;=========================================================
.mmregs
.def main ;主程序入口
.ref Timer0Init ;Timer0初始化子程序
;数据管地址
Digital0 .set 1000H ;数据管1
Digital1 .set 1001H ;数据管2
Digital2 .set 1002H ;数据管3
Digital3 .set 1003H ;数据管4
Digital4 .set 1004H ;数据管5
Digital5 .set 1005H ;数据管6
DotPoint .set 1006H ;小数点
LED .set 1007H ;LED
STACK .usect "STACK",10H ;分配堆栈空间
.data
DATA: .word 1,2,3,4,5,6 ;测试数据
Dot_DATA: .word 010101b;
LED_DATA: .word 0101010b
.text
main:
STM #STACK+10H,SP ;设堆栈指针SP
STM #K_SWWSR,SWWSR
SSBX INTM ;关中断
LD #DATA,DP ;设数据地址DP
STM #DATA,AR1
*写数据
PORTW *AR1+,Digital0
PORTW *AR1+,Digital1
PORTW *AR1+,Digital2
PORTW *AR1+,Digital3
PORTW *AR1+,Digital4
PORTW *AR1+,Digital5
PORTW Dot_DATA,DotPoint
PORTW LED_DATA,LED
END: B END
.end
技巧提示:数码管、LED的IO地址的定义也可以单独存到一个文件中,在需要它的程序中用.include/.copy指令。
练习:修改预设值重新运行观察结果。 |