Не совсем последний бит, вместо 7Ah получил FAh, а вместо FFh получил 75h!
Вот код, сделал, но сейчас другая проблема, отправляю к примеру с компа 7Fh а получаю FAh, соответственно на экране не то что нужно, изза чего может быть такая фигня?
Код
Public line1HEX As String
Public line1spHEX As String
Public line1LCD As String
Public line1spLCD As String
Public line1 As String
Public line1len As String
Public line2hex As String
Public line2spHEX As String
Public line2LCD As String
Public line2spLCD As String
Public line2 As String
Public line2len As String
Public DataLCD As String
Public DataLCDlen As String
Public ix As Integer
Public iy As Integer
Public i1 As Integer
Public i2 As Integer
Private Sub Clear_Click()
Text1.Text = ""
Text2.Text = ""
If MSComm1.PortOpen = False Then
MSComm1.PortOpen = True
End If
MSComm1.Output = " " '32 space characters
End Sub
Private Sub Form_Load()
MSComm1.CommPort = 1 'Set operating for COM1 port'
MSComm1.Settings = "9600,n,8,1" 'Set operating on 9600bps, no parity, 8-bit, stop bit'
If MSComm1.PortOpen = True Then
MSComm1.PortOpen = False
End If
End Sub
Private Sub Send_Click()
DataLCD = line1LCD & line2LCD
If MSComm1.PortOpen = False Then
MSComm1.PortOpen = True
End If
DataLCDlen = Len(DataLCD)
Dim result()
ReDim result(DataLCDlen)
For iy = 1 To DataLCDlen
result(iy - 1) = Mid(DataLCD, iy, 1)
result(iy - 1) = Asc(result(iy - 1))
MSComm1.Output = result(iy - 1)
Next
End Sub
Private Sub Text1_Change()
line1HEX = ""
line1spHEX = ""
line1LCD = ""
line1spLCD = ""
line1 = Text1.Text
line1len = Len(line1)
If Text1.Text = "" Then
Text3.Text = ""
Else
Dim result()
ReDim result(line1len)
For ix = 1 To line1len
result(ix - 1) = Hex(Asc(Mid(line1, ix, 1)))
line1HEX = line1HEX & result(ix - 1) & " "
Next
If line1len < 16 Then
For i1 = line1len + 1 To 16
line1spHEX = line1spHEX & Hex(32) & " "
line1spLCD = line1spLCD & " "
Next
line1HEX = line1HEX & line1spHEX
line1LCD = line1 & line1spLCD
Else
line1LCD = line1
End If
Text3.Text = line1HEX
End If
End Sub
Private Sub Text2_Change()
line2hex = ""
line2spHEX = ""
line2LCD = ""
line2spLCD = ""
line2 = Text2.Text
line2len = Len(line2)
If Text2.Text = "" Then
Text4.Text = ""
Else
Dim result()
ReDim result(line2len)
For ix = 1 To line2len
result(ix - 1) = Hex(Asc(Mid(line2, ix, 1)))
line2hex = line2hex & result(ix - 1) & " "
Next
If line2len < 16 Then
For i2 = line2len + 1 To 16
line2spHEX = line2spHEX & Hex(32) & " "
line2spLCD = line2spLCD & " "
Next
line2hex = line2hex & line2spHEX
line2LCD = line2 & line2spLCD
Else
line2LCD = line2
End If
Text4.Text = line2hex
End If
End Sub
Код
ORG 0000H
LJMP START
ORG 0100H
START: MOV SP,#30H ;magdir mahsanit le push ve pop ktovet 30h
LCALL CLRLCD
MOV DPTR,#1200H ;agdarat ktovet le mahrozet rishona
LCALL NEXT
LCALL LINE2
MOV DPTR,#1210H ;agdarat ktovet le mahrozet shnia
LCALL NEXT
MOV TMOD,#00100000B ; AGDARAT MODE2 LE TIMER1, AGDARAT EFSHUR ALYADEY TR1 BILVAD
MOV SCON,#01010000B ; AGDARAT SHIDUR 8-BIT, EFSHUR KABALA DEREH PORT TURI
MOV TCON,#00000101B ; AGDARAT DIRBUN KATZE
MOV IE,#10010000B ; ADLAKAT MAAREHET PSIKOT, ADLAKAT PSIKAT PORT TURI
MOV IP,#00010000B ; AGDARAT ADIFUT LE INTERRUPT0 HITZONI
MOV TH1,#0FDH ; AGDARAT ZMAN SHEL TIMER LE 9600BPS
SETB TR1 ; AFALAT TIMER1
NEW: MOV R2,#32D
MOV R1,#50H
WAIT: JNB RI,WAIT ; MEHAKE AD LE KABALAT NATUN, KAASHER MITKABEL 1 NATUN ITKABEL, PSIKA MUFELET
MOV A,SBUF
MOV @R1,A
INC R1
CLR RI
DJNZ R2,WAIT
LCALL SHOW2
LJMP NEW
$: SJMP $
SHOW2: LCALL CLRLCD
LCALL NEXT2
LCALL LINE2
LCALL NEXT3
RET
NEXT2: MOV R7,#16D ;agdarat lulaa le 16 otiot shel shura
MOV R1,#50H
LAK2: CLR A
MOV A,@R1
LCALL WRTLCD
INC R1
DJNZ R7,LAK2
RET
NEXT3: MOV R7,#16D ;agdarat lulaa le 16 otiot shel shura
MOV R1,#60H
LAK3: CLR A
MOV A,@R1
LCALL WRTLCD
INC R1
DJNZ R7,LAK3
RET
NEXT: MOV R7,#16D ;agdarat lulaa le 16 otiot shel shura
LAK: CLR A
MOVC A,@A+DPTR
LCALL WRTLCD
INC DPTR
DJNZ R7,LAK
RET
CLRLCD: MOV A,#38H ;agdarat rezolutziya
LCALL COMMAND
MOV A,#0CH ;tadlik masah, tehabe saman
LCALL COMMAND
MOV A,#0DH ;tadlik masah, saman meavhev
LCALL COMMAND
MOV A,#01H ;timhak masah, saman le athala
LCALL COMMAND
MOV A,#02H ;saman le athala
LCALL COMMAND
RET
COMMAND: PUSH DPL
PUSH DPH
CLR P1.0
MOV DPTR,#2000H ;agdarat ktovet masah
MOVX @DPTR,A ;haavarat milat bakara le masah
LCALL DELAY
POP DPH
POP DPL
RET
WRTLCD: PUSH DPH
PUSH DPL
SETB P1.0 ;bakaha le ktiva la masah
MOV DPTR,#2000H ;ktovet masah
MOVX @DPTR,A ;avarat tav me zikaron le masah
LCALL DELAY
POP DPL
POP DPH
RET
LINE2: MOV A,#0C0H ;agdarat saman be shura shnia
LCALL COMMAND
RET
DELAY: MOV R3,#05H
L5: MOV R4,#0FFH
DD: DJNZ R4, DD
DJNZ R3,L5
RET
DELAY1: LCALL DELAY
LCALL DELAY
LCALL DELAY
RET
ORG 1200H
DB 'THE NEW LEVEL OF'
ORG 1210H
DB '-ADVERTISEMENT!-'
SOF: SJMP $
END
Формула настройки таймера (TH1)
speedinbaud=[(2^smod)/32]*[Fosc/(12(256-TH1))]
smod = 0 или 1 (0 single rate, 1 double rate)
Fosc = 11.0592Mhz
speedinbaud = 9600
соответственно TH1 =
253 dec или
FD hexА вот например эта прога которая отправляет из МК в комп работает нормально
Код
org 0000h
ljmp start
org 0100h
start: mov tmod,#20h
mov scon,#01000000b
mov th1,#0fdh
setb tr1
ho: mov a,#'y'
mov sbuf,a
jnb ti,$
clr ti
mov a,#'e'
mov sbuf,a
jnb ti,$
clr ti
mov a,#'s'
mov sbuf,a
jnb ti,$
clr ti
sjmp ho
end