我编了一个小程序,意图通过电脑上的串口控制软件,输出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
|