我编了一个小程序,意图通过电脑上的串口控制软件,输出1到8这八个数字来控制版上的8个led灯,灯是共阳极的。
思路很简单
就是计时器用19200波特率,SMOD为1,。
采用中断的方式,来了数字后,进入中断。
然后将A寄存器内的数字和1、2、3、4、5、6、7、8的ASCII码逐个相比。
(这里的实现是通过A一次次减1实现的)
相等就让对应的灯亮。
然后返回等待下一个中断
但是运行中,怎样也无法控制灯亮,用的是hl340 usb转串口的线,检测过,线是没有问题的。也有信号出来,为什么就是不能进入中断呢,或者说就是控制不了呢?跪求各位大神解答。。。
ORG 0000H;
MOV TMOD, #20H;
MOV IE, #90H;
MOV TL1, #0FDH;
MOV TH1, #0FDH;
SETB TR1;
MOV P2,#0FFH;
MOV SCON,#50H;
MOV PCON,#70H;
ORG 0023H
JNB RI, NEXT;
SJMP LIGHT_A;
LIGHT_A:MOV A, SBUF;
MOV R0, A;
CLR C;
SUBB A, #49;
JZ LIGHT0;
CLR C;
DEC A;
JZ LIGHT1;
DEC A;
JZ LIGHT2;
DEC A;
JZ LIGHT3;
DEC A;
JZ LIGHT4;
DEC A;
JZ LIGHT5;
DEC A;
JZ LIGHT6;
DEC A;
JZ LIGHT7;
SJMP NEXT;
LIGHT0: CLR P2.0;
SJMP NEXT;
LIGHT1: CLR P2.1;
SJMP NEXT;
LIGHT2: CLR P2.2;
SJMP NEXT;
LIGHT3: CLR P2.3;
SJMP NEXT;
LIGHT4: CLR P2.4;
SJMP NEXT;
LIGHT5: CLR P2.5;
SJMP NEXT;
LIGHT6: CLR P2.6;
SJMP NEXT;
LIGHT7: CLR P2.7;
SJMP NEXT;
NEXT: CLR RI;
RETI;
END
此帖出自
小平头技术问答
一周热门 更多>