- MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad         
Ergebnis 1 bis 9 von 9

Thema: wie aus bascom *.bas eine bascom lib machen ????

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    18.10.2007
    Ort
    Hamm
    Alter
    49
    Beiträge
    21

    wie aus bascom *.bas eine bascom lib machen ????

    Anzeige

    E-Bike
    so ich habe mir hier aus dem forum ein codeschnippsel für das display von pollin mit der bezeichnung "HLM8070" besorgt und etwas umgestrickt. Funktioniert auch wunderbar doch jetzt würde ich das *bas programm dazu gerne als lib verwenden um dann z.B. dieses programm bei bedarf in andere programme einbauen zu können ähnlich wie die anderen displays per LCD-anweisung wie die in Bascom schon enthalten ist kann mir irgendwer erklären wie das geht ????

    bin allerdings weder in c noch in asm eine leuchte auch meine Bascom kentnisse bewegen sich eher auf anfänger niveau

    hier erstmal der code den ich verwende damit auch andere die das teil haben es mit einfachen mitteln einsetzen können

    Code:
    $regfile = "m32def.dat"
    $crystal = 16000000
    
    Declare Sub Lcd_m50530_init()                               'declare the SUB program
    Declare Sub Lcd_m50530_chr(ch As Byte)
    Declare Sub Lcd_m50530_command(command As Byte)
    Declare Sub Lcd_m50530_gotoxy(lcd_x As Byte , Lcd_y As Byte)
    Declare Sub Lcd_m50530_clear()
    Declare Sub Lcd_m50530_enable
    Declare Sub Lcd_m50530_print()
    
    Lcd_m50530 Alias Portc
    Config Lcd_m50530 = Output
    _oc1 Alias 4
    _oc2 Alias 5
    _ex Alias 6
    
    Dim T As Byte                                               ' Zählschleife
    Dim Lcd_temp As Byte                                        ' Temp im Unterprogramm
    Dim Lcd_parameter As Byte                                   ' wird an LCD gesendet
    Dim _x As Byte                                              ' Cursor x Position
    Dim _y As Byte                                              ' Cursor y Position
    Dim Text As String * 16                                     ' String zur textübergabe
    Dim Xstring As String * 16
    Dim Xchar As Byte
    Dim I As Byte
    
    '-------------------------
    '      Begin Hauptprogramm
    '-------------------------
    _x = 5 : _y = 2
    Call Lcd_m50530_init
    Do
     For I = 1 To 100
     Text = Str(i)
     Call Lcd_m50530_gotoxy(_x , _y)
     Call Lcd_m50530_print()
     Waitms 200
     If I = 100 Then Call Lcd_m50530_clear
     Next
    Loop
    
    '-------------------------
    '      End Hauptprogramm
    '-------------------------
    '----------------------------------------
    Sub Lcd_m50530_init
    '----------------------------------------
    
      Lcd_parameter = $d8                                       'set function mode (SF) 0b11011000
      Call Lcd_m50530_command(lcd_parameter)                    '4bit-Modus einstellen  11 -4/8bit-FONT-2xDUTY-2xRAM
    
      Lcd_parameter = $50                                       'set entry mode (SE)    0b01010000
      Call Lcd_m50530_command(lcd_parameter)                    'Cursor selbst setzen
    
      Lcd_parameter = $33                                       'set display mode (SD)  0b00110011
      Call Lcd_m50530_command(lcd_parameter)                    'Display ein, Cursor nicht anzeigen
    
      Lcd_parameter = $01                                       ' 0b00000001    Display löschen
      Call Lcd_m50530_command(lcd_parameter)
      Waitms 2
    End Sub
    
    '----------------------------------------
    Sub Lcd_m50530_chr(ch As Byte)
    '----------------------------------------
      Lcd_temp = Ch
      Shift Lcd_temp , Right , 4
      Set Lcd_temp._oc2
      Lcd_m50530 = Lcd_temp
      Call Lcd_m50530_enable
    
      Lcd_temp = Ch And $0f
      Set Lcd_temp._oc2
      Lcd_m50530 = Lcd_temp
      Call Lcd_m50530_enable
      Waitus 20
    End Sub
    
    '---------------------------------------
    Sub Lcd_m50530_command(command As Byte)
    '---------------------------------------
      Lcd_temp = Command
      Shift Lcd_temp , Right , 4
      Reset Lcd_temp._oc1
      Reset Lcd_temp._oc2
      Lcd_m50530 = Lcd_temp
      Call Lcd_m50530_enable
    
      Lcd_temp = Command And $0f
      Reset Lcd_temp._oc1
      Reset Lcd_temp._oc2
      Lcd_m50530 = Lcd_temp
      Call Lcd_m50530_enable
      Waitus 20
    End Sub
    '-----------------------------------------------------
    Sub Lcd_m50530_gotoxy(lcd_x As Byte , Lcd_y As Byte)
    '-----------------------------------------------------
    
      Select Case Lcd_y
        Case 1 : Lcd_parameter = $00
        Case 2 : Lcd_parameter = $40
        Case 3 : Lcd_parameter = $80
        Case 4 : Lcd_parameter = $c0
        Case Else : Lcd_parameter = $00
      End Select
    
      Lcd_parameter = Lcd_parameter + Lcd_x
      Decr Lcd_parameter
      Lcd_temp = Lcd_parameter
      Shift Lcd_temp , Right , 4
      Set Lcd_temp._oc1
      Set Lcd_temp._oc2
      Lcd_m50530 = Lcd_temp
      Call Lcd_m50530_enable
    
      Lcd_temp = Lcd_parameter And $0f
      Set Lcd_temp._oc1
      Set Lcd_temp._oc2
      Lcd_m50530 = Lcd_temp
      Call Lcd_m50530_enable
      Waitus 20
    End Sub
    
    '----------------------------------------
    Sub Lcd_m50530_clear
    '----------------------------------------
      Lcd_parameter = $01                                       ' 0b00000001    Display löschen
      Call Lcd_m50530_command(lcd_parameter)
      Waitms 2
    End Sub
    
    '----------------------------------------
    Sub Lcd_m50530_enable
    '----------------------------------------
      Set Lcd_m50530._ex
      Waitus 1
      Reset Lcd_m50530._ex
    End Sub
    
    '----------------------------------------
    Sub Lcd_m50530_print()
    '----------------------------------------
      For T = 1 To Len(text)
           Xstring = Mid(text , T , 1)
           Xchar = Asc(xstring)
        Call Lcd_m50530_chr(xchar)
     Next
    
    End Sub

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.05.2007
    Beiträge
    594
    Also aus Basco-Listings braucht man keine LIB zu machen, denn man kann sie ja auch einfach so mit ins Hauptprogramm mit reinsetzen - der Ergebnis (also die Codegröße) bleibt da sowieso gleich.
    LIBs sind in Assembler geschrieben - was auch Sinn macht, denn so hat man nur die Basic-Befehle vor Augen und muss sich um den Rest nicht kümmern.

    Wenn du Teile des Codes verpacken und einfach nutzen willst, leg die SUBs oder FUNCTIONS an. Das ist weniger schwer als es erstmal aussieht und sehr praktisch.

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    18.10.2007
    Ort
    Hamm
    Alter
    49
    Beiträge
    21
    naja hatte eigentlich gedacht es findet sich jemand der den code so umbaut das das ding nachher mit den normalen LCD-befehlen von Bascom zu benutzen ist also auch die pinconfig und alles inclusive locate usw.

    naja man kann halt nicht alles haben

    wäre halt schön gewesen da das display recht gross und vor allem billig zu haben ist

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    ... es findet sich jemand der den code so umbaut ..
    Geht schon, is aber Arbeit *schwitz*
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    18.10.2007
    Ort
    Hamm
    Alter
    49
    Beiträge
    21
    würds ja selber versuchen *denk* allerdings jetzt zusätzlich noch zu Bascom asm oder c ist mir ehrlichgesagt zu kompliziert werd wohl sobald ich Bascom kapiert habe mal mit c anfangen und dann irgendwann in ferner zukunft auch mit asm aber alles auf einmal ist etwas viel *gg* bin ja froh wenn ich Bascom irgendwann mal checke

  6. #6
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.842
    Verständlich.
    However, wenn du mal Lust hast, eine Literaturempfehlung :
    https://www.roboternetz.de/wissen/in...Cr_Bascom-User

    https://www.roboternetz.de/wissen/in...scom_Libraries
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    18.10.2007
    Ort
    Hamm
    Alter
    49
    Beiträge
    21
    *gg* immer gern will ja was lenen aber das meiste daraus kenn ich schon *denk* auch hab ich das Buch eines ge´wssen herrn rowalt hier war auch recht informativ *habdamitangefangen* naja und im mom buddel ich mich halt durch die Bascom hilfe ist ja gespickt mit beispielen zu so zimlich fast jedem problem *gg*

  8. #8
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    26.05.2007
    Beiträge
    594
    Aber ob du jetzt
    Code:
    LCD "Hallo Welt"
    oder
    Code:
    Mein_LCD(String-Variable)
    schreibst ist doch egal, oder?

  9. #9
    Neuer Benutzer Öfters hier
    Registriert seit
    18.10.2007
    Ort
    Hamm
    Alter
    49
    Beiträge
    21
    das schon aber z.B die port configuration oder die angabe wohin mit den daten usw wäre halt einfacher naja erstmal bastel ich jetzt daran wie ich aus dem befehl "Lcd_m50530 Alias Portc Config Lcd_m50530 = Output" so abändere das nicht immer der ganze port blockiert ist sondern ich die anderen pins noch einzel nutzen kann. bisher wird immer der ganze port benutzt obwohl ich ja nur 4 datenleitungen brauche da ich aber RN-Control nutze liegen dann ja die anderen ports z.B. I2C als belegt und nicht mehr nutzbar oder irre ich da ??

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test