من از طریق متلب با دستور printf از متلب به میکرو این رشته "16" رو برای میکرو فرستادم. بعد چون میخواستم عمل ریاضی روش انجام بدم با استفاده از دستور val به یک متغیر عددی تبدیلش کردم اما نمی دونم چرا پردازش ریاضی رو درست انجام نمی ده
مثلا حاصل 2*16 رو 212 داد .کسی میدونه مشکل کجاست اینم برنامه میکرو و متلب:
*******************************برنامه متلب***************************************
clc
s=serial('com1','baudrate',384 00,'databits',8)
fopen(s)
% for i=1:4
%b=['1';'2';'3';'4& #039;]
d=Addresses(1,1).edit8
fprintf(s,'%s','16'
fclose(s)
***************************برنامه میکرو**********************
$regfile = "m32def.dat"
$crystal = 8000000
$baud = 38400
Config Serialin = Buffered , Size = 20
Enable Interrupts
Dim N As String * 10
Dim Ar0(85) As Word
Dim B As Word
Dim C As Word
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2
Cls
Do
N = Waitkey()
B = Val(n)
Ar0(1) = B
C = B * 2
Lcd C
Loop
End
مثلا حاصل 2*16 رو 212 داد .کسی میدونه مشکل کجاست اینم برنامه میکرو و متلب:
*******************************برنامه متلب***************************************
clc
s=serial('com1','baudrate',384 00,'databits',8)
fopen(s)
% for i=1:4
%b=['1';'2';'3';'4& #039;]
d=Addresses(1,1).edit8
fprintf(s,'%s','16'

fclose(s)
***************************برنامه میکرو**********************
$regfile = "m32def.dat"
$crystal = 8000000
$baud = 38400
Config Serialin = Buffered , Size = 20
Enable Interrupts
Dim N As String * 10
Dim Ar0(85) As Word
Dim B As Word
Dim C As Word
Config Lcd = 16 * 2
Config Lcdpin = Pin , Db4 = Portb.4 , Db5 = Portb.5 , Db6 = Portb.6 , Db7 = Portb.7 , E = Portb.3 , Rs = Portb.2
Cls
Do
N = Waitkey()
B = Val(n)
Ar0(1) = B
C = B * 2
Lcd C
Loop
End
دیدگاه