作者king53719 (伟仔)
看板ASM
标题Re: 电脑(VB)经由MAX-232与8051沟通上问题
时间Sun Mar 18 17:35:53 2007
※ 引述《LLight (世上皆虚情假意..)》之铭言:
: ※ 引述《king53719 (伟仔)》之铭言:
: : HI, 我有一个8051跟rs232沟通上的问题,想麻烦请教各位!
: : 我是利用vb经由rs232在经由MAX-232转换位准传送到8051。
: : 我主要是在CASE "A"中出现问题,其余动作正常,当我从VB中传出ASCII码1
: : ,也就是要执行 CASE "A"中让P0.2的LED导通(亮),但是没辨法亮,
: : 其余经由VB传出的ASCII码执行的动作正常,麻烦您帮我一下..谢谢!
: 你的状况应该跟LED有关... 共阴或共阳...
: 因为8051的P0,是开集极... 而P1~P3不是开集极...
: 若P0之LED共接脚为地... 则应该要接个提升电阻... LED才会亮...
: (P1~P3都有内建提升电阻,这就是为什麽你的P1~P3之LED都能显示正常的原故。)
: 没猜错的话... 希望有解决到... (没看程式...)
: : 以下是我8051的程式!
: : MOV R5,#25
: : CALL DELAYms
: : CPL P0.0
: : ;-------------------------------;
: : WAIT: JNB RI,WAIT
: : CPL P0.1
: : CLR RI
: : MOV A,SBUF
: : ;-------------------------------;
: : ;--SELECT CASE------------------;
: : ;--CASE "A"---------------------;
: : MA:
: : CJNE A,#1,MB
: : CPL P0.2
: : JMP MEND
: : ;--CASE "B"---------------------;
: : MB:
: : CJNE A,#2,MC
: : MOV R1,#10
: : MBLOOP:
: : CPL P0.3
: : MOV R5,#25
: : CALL DELAYms
: : CPL P0.3
: : MOV R5,#25
: : CALL DELAYms
: : DJNZ R1,HBLOOP
: : JMP HEND
: : ;--CASE "C"----------------------;
: : MC:
: : CJNE A,#3,MEND
: : MOV R1,#10
: : MCLOOP:
: : CPL P0.4
: : MOV R5,#50
: : CALL DELAYms
: : CPL P0.4
: : MOV R5,#50
: : CALL DELAYms
: : DJNZ R1,MCLOOP
: : JMP MEND
: : ;--CASE "D"----------------------;
: : ;--CASE "E"----------------------;
: : ;--CASE ELSE---------------------;
: : MEND:
: : CPL PO.2
: : MOV R5,#50
: : CALL DELAYms
: : CPL PO.1
: : JMP WAIT
: : ;--CASE END-----------------------;
: : ;---------以下为副程式------------;
: : ;---------------------------------;
: : INIT_RS232:
: : MOV TMOD,#20H
: : MOV TH1,#0E8H
: : SETB TR1
: : MOV SCON,#01010000B
: : RET
: : ;----------------------------------;
: : DELAYms:
: : MOV R6,#100
: : DELAYm : MOV R7,#100
: : DJNZ R7,$
: : DJNZ R6,DELAYm
: : DJNZ R5,DELAYms
: : RET
: : ;----------------------------------;
: : END
: : ;----------------------------------;
=========================================================================
to:LLight←我有接提升电阻了,P0.0~P0.7中只有P0.2不受控制,但我发现一个很
有趣的现象,因为我在8051中设定当RS232送出一个1的ASCII的数字码P0.2
就要亮,但我送一个1不会亮但如果我送出11二个1的话P0.2就会亮!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 124.8.151.79