我想操作led: 实现一8位LED灯泡由左到右循环闪烁<br /> .title "bubble.asm"<br /> .mmregs<br />STACK .usect "STACK",5h<br /> .bss y,1<br /> .def start<br /> .data<br />PA0 .set 0<br /> .text <br />start: STM #7000,SWWSR ;设等待位<br /> STM #2,AR3 ;将辅助寄存器AR3设为2 (乘2,实现左移)<br /> STM #6,AR1 ;将辅助寄存器AR1设为6 (左移7次)<br /> STM #3,AR2 ;将辅助寄存器AR2设为3 (循环执行4次)<br /> LD AR3,T ;将T(乘法寄存器)设为2<br />loop1: LD #1,A ;A寄存器值为1<br /> STL A,@y ;y=1<br /> PORTW @y,PA0 ;输出y地址内的值到输出口<br /> STM #10000,AR4 ;将辅助寄存器AR4设为10000<br />loop3: RPT #10000 ;重复执行下一程序10001次<br /> NOP ;等待<br /> BANZ loop3,*AR4- ;循环AR4值(10000)+1次<br />loop2: MPY @y,A ;将y×T,其值存入A寄存器<br /> STL A,@y ;将A内值存入y地址中<br /> PORTW @y,PA0 ;输出y地址值到输出口<br /> STM #10000,AR5 ;将辅助寄存器AR5设为10000<br />loop4: RPT #10000 ;实现第8个灯跳转到第1个灯时的时间延迟 <br /> NOP<br /> BANZ loop4,*AR5-<br /> BANZ loop2,*AR1-<br /> BANZ loop1,*AR2-<br />end: B end <br /> .end <br />
|