اطلاعیه

Collapse
No announcement yet.

ذخیره داده در حافظه

Collapse
X
 
  • فیلتر
  • زمان
  • Show
Clear All
new posts

    ذخیره داده در حافظه

    سلام دوستان کد پایین رو در محیط بسکام نوشتم. این برنامه چهار نوع داده اعم از سه داده مربوط به شتاب سنج و یک داده ضربان قلب رو در حافظه mmc در فایل تکست ذخیره می کنه اما فقط یک سطر از داده ها رو نشون میده. من میخوام که حداقل 200 تا داده بگیرم اما نمیشه ممنون میشم راهنماییم کنید.

    دریافت داده به این صورت: 56 200 322 178
    سه ستون اول سمت چپ سه داده شتاب و ستون چهارم داده ضربان قلب است.
    کد:
    '-------------------------------
    'mmc----------------------------
    $regfile = "m32def.dat"
    $crystal = 8000000
    $baud = 38400
    $swstack = 32
    $hwstack = 64
    $framesize = 64
    Enable Interrupts
    $include "CONFIG_AVR-DOS.Bas"
    $include "config_mmc.bas"
    
    
    
    '-------------------------------
    Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.1 , Db6 = Portc.0 , _
    Db7 = Portd.7 , E = Portc.3 , Rs = Portc.5
    Config Lcd = 16 * 2
    Cls : Cursor Off
    Config Adc = Single , Prescaler = Auto
    '-------------------------------------------
    Deflcdchar 0 , 24 , 24 , 32 , 32 , 32 , 32 , 32 , 32
    '-------------------------------------------
    'mmc
    Dim Conter As Byte
    Conter = 0
    '--------------------------------
    'adxl
    Dim X(5) As Integer
    Dim Y(5) As Integer
    Dim Z(5) As Integer
    Dim A1 As Byte
    Dim Integert As Integer
    Dim Singlee As Single
    Dim Stringg As String * 10
    Dim X_manfi As Integer
    Dim Y_manfi As Integer
    Dim Z_manfi As Integer
    '============================================
    'zaraban
    Dim A As Byte
    Dim B As Word
    Dim C As Byte
    Config Pind.1 = Input : Start_sw Alias Pind.1
    Config Pind.0 = Input : Sensor Alias Pind.0
    '------------------------------
    'adxl
    Config Pinb.0 = Input : Key_x Alias Pinb.0
    Config Pinb.1 = Input : Key_y Alias Pinb.1
    Config Pinb.2 = Input : Key_z Alias Pinb.2
    Config Pinb.3 = Input : Key_reset Alias Pinb.3
    '==============================================
    '============================================
    'adxl
    Enable Interrupts
    X_manfi = 0
    Y_manfi = 0
    Z_manfi = 0
    '============================================
    'start---------------------------
    Again:
    If Conter > 5 Then
      Cls
      Lcd " error !!! "
      Waitms 500
      End
    End If
    Incr Conter
    '--------------------------------- CHECK MMC
    Cls
    Lcd " RESET MMC"
    Waitms 500
    If Drivecheck() <> 0 Then
      Cls
      Locate 1 , 1
      Lcd "not ready to use … "
      Waitms 500
      Gosub Again
    End If
    '---------------------------------- INIT DRIVE
    If Driveinit() <> 0 Then
      Cls
      Locate 1 , 1
      Lcd "not inserted "
      Waitms 500
      Gosub Again
    End If
    Cls
    Locate 1 , 1
    Lcd "mmc init... OK"
    Wait 1
    '---------------------------------- CHECK FILE SYSTEM
    If Initfilesystem(1) <> 0 Then
      Cls
      Locate 1 , 1
      Lcd " not supported "
      Wait 1
      Gosub Again
    End If
    '-----------------------------------
      '-----------------------------------
      'Zaraban
      Cls
      Do
      Locate 1 , 5
      Lcd "Welcome"
      Locate 2 , 3
      Lcd "Press Start"
      Loop Until Pind.1 = 0
      '------------
      Enable Interrupts
      Config Clock = Soft
      Time$ = "00:00:00"
    'zaraban****************************"
    Program_start:
    Do
      Locate 1 , 4
      Lcd Time$
      If Time$ = "00:00:10" Then
      C = 10
      End If
    
      Locate 2 , 3
      Lcd "Please Wait"
      Debounce Pind.0 , 1 , Ok_button
    Loop Until C = 10
    Do
      Locate 1 , 3
      Lcd "Heartbeat:" ; B
      '-------------------------
      If B <= 60 Then
      Locate 2 , 3
      Lcd "Mood:Low" ; "     "
      End If
    
      If B => 100 Then
      Locate 2 , 3
      Lcd "Mood:High" ; "     "
      End If
    
      If 60 < B And B < 100 Then
      Locate 2 , 3
      Lcd "Mood:Normal" ; "     "
      End If
      Portd.0 = 1
    
    
      ' adxl****************************"
      If Key_reset = 0 Then
    Cls
    Lcd "RESET X,Y,Z"
    X_manfi = 0
    Y_manfi = 0
    Z_manfi = 0
      Do : Loop Until Key_reset = 1
    End If
    '=====================================
    Integert = 0
    '------------------------------
    For A1 = 1 To 100
    X(1) = Getadc(0)
    Waitus 100
    Integert = Integert + X(1)
    Next
    
    X(1) = Integert / 100
    '-----------------------------
    Integert = 0
    For A1 = 1 To 100
    X(2) = Getadc(0)
    Waitus 100
    Integert = Integert + X(2)
    Next
    
    X(2) = Integert / 100
    '-----------------------------
    Integert = 0
    For A1 = 1 To 100
    X(3) = Getadc(0)
    Waitus 100
    Integert = Integert + X(3)
    Next
    
    X(3) = Integert / 100
    '-------------------------------
    Integert = 0
    For A1 = 1 To 100
    X(4) = Getadc(0)
    Waitus 100
    Integert = Integert + X(4)
    Next
    
    X(4) = Integert / 100
    '------------------------------
    X(5) = 0
    X(5) = X(1)
    X(5) = X(5) + X(2)
    X(5) = X(5) + X(3)
    X(5) = X(5) + X(4)
    
    X(5) = X(5) / 4
    X(5) = X(5) - X_manfi
    X(5) = X(5) - 10
    '-------------------------------
    If Key_x = 0 Then
    X_manfi = X(5)
    Locate 1 , 1 : Lcd "X= --- "
       Do : Loop Until Key_x = 1
    End If
    
    Show_x:
    Locate 1 , 1
     X(5) = X(5) - 324
    Lcd "X=" ; X(5) ; "  "                  'Stringg ; "   "
    '===============================================================================
    Integert = 0
    For A1 = 1 To 100
    Y(1) = Getadc(1)
    Waitus 100
    Integert = Integert + Y(1)
    Next
    
    Y(1) = Integert / 100
    '----------------------------
    Integert = 0
    For A1 = 1 To 100
    Y(2) = Getadc(1)
    Waitus 100
    Integert = Integert + Y(2)
    Next
    
    Y(2) = Integert / 100
    '----------------------------
    Integert = 0
    For A1 = 1 To 100
    Y(3) = Getadc(1)
    Waitus 100
    Integert = Integert + Y(3)
    Next
    
    Y(3) = Integert / 100
    '----------------------------
    Integert = 0
    For A1 = 1 To 100
    Y(4) = Getadc(1)
    Waitus 100
    Integert = Integert + Y(4)
    Next
    
    Y(4) = Integert / 100
    '----------------------------
    Y(5) = 0
    Y(5) = Y(1)
    Y(5) = Y(5) + Y(2)
    Y(5) = Y(5) + Y(3)
    Y(5) = Y(5) + Y(4)
    
    Y(5) = Y(5) / 4
    Y(5) = Y(5) - Y_manfi
    '-------------------------------
    If Key_y = 0 Then
    Y_manfi = Y(5)
    Locate 2 , 1 : Lcd "Y= ---"
       Do : Loop Until Key_y = 1
    End If
    
    Locate 2 , 1
    Y(5) = Y(5) - 337
    Lcd "Y=" ; Y(5) ; "  "                  ' Stringg ; "   "
    '===========================================
    Integert = 0
    For A1 = 1 To 100
    Z(1) = Getadc(2)
    Waitus 100
    Integert = Integert + Z(1)
    Next
    
    Z(1) = Integert / 100
    '-----------------------------
    Integert = 0
    For A1 = 1 To 100
    Z(2) = Getadc(2)
    Waitus 100
    Integert = Integert + Z(2)
    Next
    
    Z(2) = Integert / 100
    '-----------------------------
    Integert = 0
    For A1 = 1 To 100
    Z(3) = Getadc(2)
    Waitus 100
    Integert = Integert + Z(3)
    Next
    
    Z(3) = Integert / 100
    '-----------------------------
    Integert = 0
    For A1 = 1 To 100
    Z(4) = Getadc(2)
    Waitus 100
    Integert = Integert + Z(4)
    Next
    
    Z(4) = Integert / 100
    '-----------------------------
    Z(5) = 0
    Z(5) = Z(1)
    Z(5) = Z(5) + Z(2)
    Z(5) = Z(5) + Z(3)
    Z(5) = Z(5) + Z(4)
    
    Z(5) = Z(5) / 4
    Z(5) = Z(5) - Z_manfi
    '-------------------------------
    If Key_z = 0 Then
    Z_manfi = Z(5)
    Locate 1 , 10 : Lcd "Z= ---"
       Do : Loop Until Key_z = 1
    End If
    
    Locate 1 , 10
     Z(5) = Z(5) - 416
    Lcd "Z=" ; Z(5) ; "   "
    
      ' mmc****************************"
      Cls
      Locate 1 , 1 : Lcd "ok"
      Locate 2 , 1
      Lcd "mmcsize : " ; Disksize() ; " bytes"
      Wait 5
      '-----------------------------------
      Dim S As String * 30
      Dim S1 As String * 30
      Dim S2 As String * 30
      Dim S3 As String * 30
      Dim S4 As String * 30
    
      Dim Filename As String * 20
      Filename = "temp.txt"
      Open Filename For Output As #1
      Waitms 1
      Dim Num As Word
      Dim Temp As String * 15
      'S = " ****************************"
      'Printeger #1 , S
     ' PrInteger #1 , " file 1 :"
     ' PrInteger #1 , " lm35=temperature_sensor"
      'PrInteger #1 , " new but best 1394***"
     ' PrInteger #1 , " ****************"
     ' PrInteger #1 , " end of write in file "
    
      Num = Getadc(4)
      Num = Num / 2
      S = Str(num)
      S1 = Str(b)
      S2 = Str(x(5))
      S3 = Str(y(5))
       S4 = Str(z(5))
    
      Cls
      Locate 1 , 1 : Lcd "tem=" ; S ; Chr(0) ; "c"
      Locate 1 , 10 : Lcd "pulse=" ; S1
      Locate 2 , 1 : Lcd "x=" ; S2
      Locate 2 , 6 : Lcd "y=" ; S3
       Locate 2 , 11 : Lcd "z=" ; S4
      Waitms 500
     ' Print #1 , "temp : " ; S ; " c "
      'Print #1 , "pulse : " ; S1
     ' Print #1 , "z : " ; S2
      ' Print #1 , "y : " ; S3
      'Print #1 , "x : " ; S4
      Print #1 , S1 ; " " ; S2 ; " " ; S3 ; " " ; S4
      'Print #1 , S1 ; " " ; S2 ; " " ; S3 ; " " ; S4
    
    
    
      Close #1
      Waitms 100
      Print "-----------------------------------"
      Open "TEST.TXT" For Input As #2
    
      Do
      Line Input #2 , S
        Print S
        Cls
        Locate 1 , 1
        Lcd "temperature=" ; S ; Chr(0) ; "c"
        Waitms 500
      Loop Until Eof(#2 ) <> 0
      Close #2
       Print "-----------------------------------"
    Loop
    End
    '-----------------------------------
    Ok_button:
    Incr A
    B = A * 4
    Goto Program_start
    '-------------------------
    '-----------------------------------

    #2
    پاسخ : ذخیره داده در حافظه

    با بسکام کار نکردم ولی من آخر هر چی که میخواستم روی رم ذخیره بشه یه اینتر هم میذاشتم تا بره خط بعد و داده بعدی رو ذخیره کنه.
    www.gam-co.blogsky.com

    دیدگاه


      #3
      پاسخ : ذخیره داده در حافظه

      ممنون از راهنماییتون اما توی محیط بسکام فکر نکنم کدی داشته باشه که بشه اینتر رو نوشت

      دیدگاه


        #4
        پاسخ : ذخیره داده در حافظه

        منظور از اینتر همون کد اسکی اینتر بود.
        یعنی 13
        www.gam-co.blogsky.com

        دیدگاه


          #5
          پاسخ : ذخیره داده در حافظه

          بله درسته انتهای هر رشته Ch(13) رو اضافه کردم اما درست نشد

          دیدگاه

          لطفا صبر کنید...
          X