Herr, schenk mir 20 Byte

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • Herr, schenk mir 20 Byte

      Error : 344 Line : 13 Program will overwrite bootloader [ 20 too long] , in File : C:\PROGRAM FILES (X86)\MCS ELECTRONICS\BASCOM_2081\LIB\FP_TRIG.LBX

      Ja, 20 Byte fehlen mir im Flash, um das Programm zu compilieren.

      Hat jemand eine Idee? a_14_3ef964b0

      BASCOM-Quellcode: Min-Max_Temperatur

      1. '$sim
      2. $regfile = "attiny2313.dat"
      3. $crystal = 16000000
      4. $hwstack = 34
      5. $swstack = 16
      6. $framesize = 24
      7. Reset_taste Alias Pind.1
      8. Portd.1 = 1
      9. Config 1wire = Portd.0 'achtung, externer Pullup 4k7
      10. Config Lcd = 16 * 2
      11. Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.1 , Db6 = Portb.0 , Db7 = Portd.6 , E = Portb.3 , Rs = Portb.4
      12. Initlcd
      13. Cursor Off , Noblink
      14. Deflcdchar 0 , 31 , 14 , 4 , 32 , 31 , 14 , 4 , 32 'Pfeil abwärts
      15. Deflcdchar 1 , 4 , 14 , 31 , 32 , 4 , 14 , 31 , 32 'Pfeil aufwärts
      16. Deflcdchar 2 , 14 , 10 , 14 , 32 , 32 , 32 , 32 , 32 'Gradzeichen
      17. Cls
      18. Dim Maxtemp As Integer
      19. Dim Mintemp As Integer
      20. Dim Temp As Integer
      21. Dim Temp1 As Integer
      22. Dim 1w_i As Byte
      23. Dim 1w_t1 As Integer
      24. Dim 1w_t As Integer
      25. Dim Spp(9) As Byte
      26. Dim Temperaturnegativ As Bit
      27. Dim Neustart As Bit
      28. Do
      29. 'Temperatur_starten
      30. 1wreset
      31. 1wwrite &HCC 'Skip ROM Kommando
      32. 1wwrite &H44 'Convert Temperatur Kommando
      33. Wait 1 'Wartezeit zum Wandeln
      34. 1wreset
      35. 1wwrite &H33 'Read ROM Kommando
      36. 'Temp = 1wread(1) '1.Stelle enthält den Familycode
      37. 1w_i = 1wread(1) '1.Stelle enthält den Familycode
      38. 1wreset
      39. 1wwrite &HCC 'Rom überspringen, nur 1 Sensor
      40. 1wwrite &HBE 'Temperatur auslesen
      41. Spp(1) = 1wread(9) 'Daten in ein Array lesen
      42. 'TEST
      43. 'Temp = &H10
      44. ' Spp(1) = &H36
      45. ' Spp(2) = &H00
      46. ' Spp(3) = &H4B
      47. ' Spp(4) = &H46
      48. ' Spp(5) = &HFF
      49. ' Spp(6) = &HFF
      50. ' Spp(7) = &H01
      51. ' Spp(8) = &H10
      52. ' Spp(9) = &HB4
      53. 'TEST ENDE
      54. 'Rechnung für Family Code 0x10
      55. Spp(1).0 = 0
      56. If 1w_i = &H28 Then
      57. 1w_t = Makeint(spp(1) , Spp(2))
      58. 1w_t = 1w_t * 10
      59. 1w_t = 1w_t / 16
      60. Else
      61. 'Rechnung für Family Code 0x28
      62. 1w_t = Makeint(spp(1) , Spp(2))
      63. 1w_t = 1w_t * 50
      64. 1w_t = 1w_t - 25
      65. 1w_t1 = Spp(8) - Spp(7)
      66. 1w_t1 = 1w_t1 * 100
      67. 1w_t1 = 1w_t1 / Spp(8)
      68. 1w_t = 1w_t + 1w_t1
      69. 1w_t = 1w_t / 10
      70. ' Temperatur in 0,1 Grad Schritten
      71. '
      72. End If
      73. '1w_t = -234 'Test
      74. 'Ausgabe
      75. If Reset_taste = 0 Or Neustart = 0 Then
      76. Neustart = 1
      77. Maxtemp = 1w_t
      78. Mintemp = 1w_t
      79. End If
      80. If 1w_t > Maxtemp Then Maxtemp = 1w_t
      81. If 1w_t < Mintemp Then Mintemp = 1w_t
      82. If 1w_t < 0 Then
      83. Temperaturnegativ = 1
      84. Temp1 = Abs(1w_t)
      85. Else
      86. Temperaturnegativ = 0
      87. Temp1 = 1w_t
      88. End If
      89. Temp = Temp1 / 10
      90. Locate 1 , 1
      91. Lcd "Aktuell: "
      92. Gosub Darstellung
      93. Locate 2 , 1
      94. If Mintemp < 0 Then
      95. Temperaturnegativ = 1
      96. Temp1 = Abs(mintemp)
      97. Else
      98. Temperaturnegativ = 0
      99. Temp1 = Mintemp
      100. End If
      101. Temp = Temp1 / 10
      102. Lcd Chr(0) ' ; " "
      103. Gosub Darstellung
      104. If Maxtemp < 0 Then
      105. Temperaturnegativ = 1
      106. Temp1 = Abs(maxtemp)
      107. Else
      108. Temperaturnegativ = 0
      109. Temp1 = Maxtemp
      110. End If
      111. Locate 2 , 9
      112. Temp = Temp1 / 10
      113. Lcd Chr(1)
      114. Gosub Darstellung
      115. Loop
      116. Darstellung:
      117. If Temp < 100 Then
      118. If Temperaturnegativ = 1 Then
      119. Lcd "-"
      120. Else
      121. Lcd " "
      122. End If
      123. End If
      124. If Temp < 10 Then Lcd " "
      125. Lcd Temp ; ","
      126. Temp = Temp1 Mod 10
      127. Lcd Temp ; Chr(2) ; "C"
      128. Return
      129. End
      Alles anzeigen
    • Vielleicht so!

      BASCOM-Quellcode

      1. '$sim
      2. $regfile = "attiny2313.dat"
      3. $crystal = 16000000
      4. $hwstack = 34
      5. $swstack = 16
      6. $framesize = 24
      7. Reset_taste Alias Pind.1
      8. Portd.1 = 1
      9. Config 1wire = Portd.0 'achtung, externer Pullup 4k7
      10. Config Lcd = 16 * 2
      11. Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.1 , Db6 = Portb.0 , Db7 = Portd.6 , E = Portb.3 , Rs = Portb.4
      12. Initlcd
      13. Cursor Off , Noblink
      14. Deflcdchar 0 , 31 , 14 , 4 , 32 , 31 , 14 , 4 , 32 'Pfeil abwärts
      15. Deflcdchar 1 , 4 , 14 , 31 , 32 , 4 , 14 , 31 , 32 'Pfeil aufwärts
      16. Deflcdchar 2 , 14 , 10 , 14 , 32 , 32 , 32 , 32 , 32 'Gradzeichen
      17. Cls
      18. Dim Maxtemp As Integer
      19. Dim Mintemp As Integer
      20. Dim Temp As Integer
      21. Dim Temp1 As Integer
      22. Dim 1w_i As Byte
      23. Dim 1w_t1 As Integer
      24. Dim 1w_t As Integer
      25. Dim Spp(9) As Byte
      26. Dim Temperaturnegativ As Bit
      27. Dim Neustart As Bit
      28. Do
      29. 'Temperatur_starten
      30. 1wreset
      31. 1wwrite &HCC 'Skip ROM Kommando
      32. 1wwrite &H44 'Convert Temperatur Kommando
      33. Wait 1 'Wartezeit zum Wandeln
      34. 1wreset
      35. 1wwrite &H33 'Read ROM Kommando
      36. 'Temp = 1wread(1) '1.Stelle enthält den Familycode
      37. 1w_i = 1wread(1) '1.Stelle enthält den Familycode
      38. 1wreset
      39. 1wwrite &HCC 'Rom überspringen, nur 1 Sensor
      40. 1wwrite &HBE 'Temperatur auslesen
      41. Spp(1) = 1wread(9) 'Daten in ein Array lesen
      42. 'TEST
      43. 'Temp = &H10
      44. ' Spp(1) = &H36
      45. ' Spp(2) = &H00
      46. ' Spp(3) = &H4B
      47. ' Spp(4) = &H46
      48. ' Spp(5) = &HFF
      49. ' Spp(6) = &HFF
      50. ' Spp(7) = &H01
      51. ' Spp(8) = &H10
      52. ' Spp(9) = &HB4
      53. 'TEST ENDE
      54. 'Rechnung für Family Code 0x10
      55. Spp(1).0 = 0
      56. If 1w_i = &H28 Then
      57. 1w_t = Makeint(spp(1) , Spp(2))
      58. 1w_t = 1w_t * 10
      59. 1w_t = 1w_t / 16
      60. Else
      61. 'Rechnung für Family Code 0x28
      62. 1w_t = Makeint(spp(1) , Spp(2))
      63. 1w_t = 1w_t * 50
      64. 1w_t = 1w_t - 25
      65. 1w_t1 = Spp(8) - Spp(7)
      66. 1w_t1 = 1w_t1 * 100
      67. 1w_t1 = 1w_t1 / Spp(8)
      68. 1w_t = 1w_t + 1w_t1
      69. 1w_t = 1w_t / 10
      70. ' Temperatur in 0,1 Grad Schritten
      71. '
      72. End If
      73. '1w_t = -234 'Test
      74. 'Ausgabe
      75. If Reset_taste = 0 Or Neustart = 0 Then
      76. Neustart = 1
      77. Maxtemp = 1w_t
      78. Mintemp = 1w_t
      79. End If
      80. If 1w_t > Maxtemp Then Maxtemp = 1w_t
      81. If 1w_t < Mintemp Then Mintemp = 1w_t
      82. If 1w_t < 0 Then
      83. Temperaturnegativ = 1
      84. Temp1 = Abs(1w_t)
      85. Else
      86. Temperaturnegativ = 0
      87. Temp1 = 1w_t
      88. End If
      89. Temp = Temp1 / 10
      90. Locate 1 , 1
      91. ' Lcd "Aktuell: "
      92. Lcd "Ist: "
      93. Gosub Darstellung
      94. Locate 2 , 1
      95. If Mintemp < 0 Then
      96. Temperaturnegativ = 1
      97. Temp1 = Abs(mintemp)
      98. Else
      99. Temperaturnegativ = 0
      100. Temp1 = Mintemp
      101. End If
      102. ' Temp = Temp1 / 10
      103. Lcd Chr(0) ' ; " "
      104. Gosub Darstellung
      105. If Maxtemp < 0 Then
      106. Temperaturnegativ = 1
      107. Temp1 = Abs(maxtemp)
      108. Else
      109. Temperaturnegativ = 0
      110. Temp1 = Maxtemp
      111. End If
      112. Locate 2 , 9
      113. ' Temp = Temp1 / 10
      114. Lcd Chr(1)
      115. Gosub Darstellung
      116. Loop
      117. Darstellung:
      118. Temp = Temp1 / 10
      119. If Temp < 100 Then
      120. If Temperaturnegativ = 1 Then
      121. Lcd "-"
      122. Else
      123. Lcd " "
      124. End If
      125. End If
      126. If Temp < 10 Then Lcd " "
      127. Lcd Temp ; ","
      128. Temp = Temp1 Mod 10
      129. Lcd Temp ; Chr(2) ; "C"
      130. Return
      131. End
      Alles anzeigen
      Gruß Harald
      Wem ich nicht ausdrücklich widerspreche, der darf das bis auf Widerruf als "Gefällt mir" verstehen.
    • Gradzeichen ersetzen. Chr(223) reduziert auf 99%
      Pfeil nach oben,unten ist nicht im Zeichensatz enthalten.
      Pfeil nach links und rechts jedoch sind enthalten.

      BASCOM-Quellcode

      1. '$sim
      2. $regfile = "attiny2313.dat"
      3. $crystal = 16000000
      4. $hwstack = 34
      5. $swstack = 16
      6. $framesize = 24
      7. Reset_taste Alias Pind.1
      8. Portd.1 = 1
      9. Config 1wire = Portd.0 'achtung, externer Pullup 4k7
      10. Config Lcd = 16 * 2
      11. Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.1 , Db6 = Portb.0 , Db7 = Portd.6 , E = Portb.3 , Rs = Portb.4
      12. Initlcd
      13. Cursor Off , Noblink
      14. Deflcdchar 0 , 31 , 14 , 4 , 32 , 31 , 14 , 4 , 32 'Pfeil abwärts
      15. Deflcdchar 1 , 4 , 14 , 31 , 32 , 4 , 14 , 31 , 32 'Pfeil aufwärts
      16. 'Deflcdchar 2 , 14 , 10 , 14 , 32 , 32 , 32 , 32 , 32 'Gradzeichen
      17. Cls
      18. Dim Maxtemp As Integer
      19. Dim Mintemp As Integer
      20. Dim Temp As Integer
      21. Dim Temp1 As Integer
      22. Dim 1w_i As Byte
      23. Dim 1w_t1 As Integer
      24. Dim 1w_t As Integer
      25. Dim Spp(9) As Byte
      26. Dim Temperaturnegativ As Bit
      27. Dim Neustart As Bit
      28. Do
      29. 'Temperatur_starten
      30. 1wreset
      31. 1wwrite &HCC 'Skip ROM Kommando
      32. 1wwrite &H44 'Convert Temperatur Kommando
      33. Wait 1 'Wartezeit zum Wandeln
      34. 1wreset
      35. 1wwrite &H33 'Read ROM Kommando
      36. 'Temp = 1wread(1) '1.Stelle enthält den Familycode
      37. 1w_i = 1wread(1) '1.Stelle enthält den Familycode
      38. 1wreset
      39. 1wwrite &HCC 'Rom überspringen, nur 1 Sensor
      40. 1wwrite &HBE 'Temperatur auslesen
      41. Spp(1) = 1wread(9) 'Daten in ein Array lesen
      42. 'TEST
      43. 'Temp = &H10
      44. ' Spp(1) = &H36
      45. ' Spp(2) = &H00
      46. ' Spp(3) = &H4B
      47. ' Spp(4) = &H46
      48. ' Spp(5) = &HFF
      49. ' Spp(6) = &HFF
      50. ' Spp(7) = &H01
      51. ' Spp(8) = &H10
      52. ' Spp(9) = &HB4
      53. 'TEST ENDE
      54. 'Rechnung für Family Code 0x10
      55. Spp(1).0 = 0
      56. If 1w_i = &H28 Then
      57. 1w_t = Makeint(spp(1) , Spp(2))
      58. 1w_t = 1w_t * 10
      59. 1w_t = 1w_t / 16
      60. Else
      61. 'Rechnung für Family Code 0x28
      62. 1w_t = Makeint(spp(1) , Spp(2))
      63. 1w_t = 1w_t * 50
      64. 1w_t = 1w_t - 25
      65. 1w_t1 = Spp(8) - Spp(7)
      66. 1w_t1 = 1w_t1 * 100
      67. 1w_t1 = 1w_t1 / Spp(8)
      68. 1w_t = 1w_t + 1w_t1
      69. 1w_t = 1w_t / 10
      70. ' Temperatur in 0,1 Grad Schritten
      71. '
      72. End If
      73. '1w_t = -234 'Test
      74. 'Ausgabe
      75. If Reset_taste = 0 Or Neustart = 0 Then
      76. Neustart = 1
      77. Maxtemp = 1w_t
      78. Mintemp = 1w_t
      79. End If
      80. If 1w_t > Maxtemp Then Maxtemp = 1w_t
      81. If 1w_t < Mintemp Then Mintemp = 1w_t
      82. If 1w_t < 0 Then
      83. Temperaturnegativ = 1
      84. Temp1 = Abs(1w_t)
      85. Else
      86. Temperaturnegativ = 0
      87. Temp1 = 1w_t
      88. End If
      89. Temp = Temp1 / 10
      90. Locate 1 , 1
      91. Lcd "Aktuell: "
      92. Gosub Darstellung
      93. Locate 2 , 1
      94. If Mintemp < 0 Then
      95. Temperaturnegativ = 1
      96. Temp1 = Abs(mintemp)
      97. Else
      98. Temperaturnegativ = 0
      99. Temp1 = Mintemp
      100. End If
      101. Temp = Temp1 / 10
      102. Lcd Chr(0) ' ; " "
      103. Gosub Darstellung
      104. If Maxtemp < 0 Then
      105. Temperaturnegativ = 1
      106. Temp1 = Abs(maxtemp)
      107. Else
      108. Temperaturnegativ = 0
      109. Temp1 = Maxtemp
      110. End If
      111. Locate 2 , 9
      112. Temp = Temp1 / 10
      113. Lcd Chr(1)
      114. Gosub Darstellung
      115. Loop
      116. Darstellung:
      117. If Temp < 100 Then
      118. If Temperaturnegativ = 1 Then
      119. Lcd "-"
      120. Else
      121. Lcd " "
      122. End If
      123. End If
      124. If Temp < 10 Then Lcd " "
      125. Lcd Temp ; ","
      126. Temp = Temp1 Mod 10
      127. Lcd Temp ; Chr(223) ; "C"
      128. Return
      129. End
      Alles anzeigen

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von ftelektro ()

    • hasta schrieb:

      Vielleicht so!
      Ja, danke, das reicht, wenn ich Temp = Temp1 / 10 mit in die Sub packe, jetzt sind sogar 16 Byte über, ohne sonstige Änderung ;)
      Irgendwie hab ich das übersehen beim Sub-schreiben.


      Galahat schrieb:

      Die beiden Pfeile sind doch bestimmt im Zeichenvorrat enthalten?
      Das weiß ich nicht, das dumme ist, es ist nicht mein Projekt hier, sondern für jemand anders und da ist die Hardware nicht auf meinem Tisch und ich kann auch nicht mal schnell den Zeichensatz testen ;)

      P-S-: @ftelektro:
      Danke, aber wie gesagt, ich habe keinen Zugriff auf die Hardware und weiß daher nicht, welcher Zeichensatz werkelt. Deswegen die Defs.
    • Na da lässt sich doch bestimmt noch mehr rausholen :D

      BASCOM-Quellcode

      1. $regfile = "attiny2313.dat"
      2. $crystal = 16000000
      3. $hwstack = 34
      4. $swstack = 16
      5. $framesize = 24
      6. Reset_taste Alias Pind.1
      7. Portd.1 = 1
      8. Config 1wire = Portd.0 'achtung, externer Pullup 4k7
      9. Config Lcd = 16 * 2
      10. Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.1 , Db6 = Portb.0 , Db7 = Portd.6 , E = Portb.3 , Rs = Portb.4
      11. Initlcd
      12. Cursor Off , Noblink
      13. Deflcdchar 0 , 31 , 14 , 4 , 32 , 31 , 14 , 4 , 32 'Pfeil abwärts
      14. Deflcdchar 1 , 4 , 14 , 31 , 32 , 4 , 14 , 31 , 32 'Pfeil aufwärts
      15. Deflcdchar 2 , 14 , 10 , 14 , 32 , 32 , 32 , 32 , 32 'Gradzeichen
      16. Cls
      17. Dim Maxtemp As Integer
      18. Dim Mintemp As Integer
      19. Dim Temp As Integer
      20. Dim Temp1 As Integer
      21. Dim 1w_i As Byte
      22. Dim 1w_t1 As Integer
      23. Dim 1w_t As Integer
      24. Dim Spp(9) As Byte
      25. Dim Temperaturnegativ As Bit
      26. Dim Neustart As Bit
      27. Do
      28. 'Temperatur_starten
      29. 1wreset
      30. 1wwrite &HCC 'Skip ROM Kommando
      31. 1wwrite &H44 'Convert Temperatur Kommando
      32. Wait 1 'Wartezeit zum Wandeln
      33. 1wreset
      34. 1wwrite &H33 'Read ROM Kommando
      35. 'Temp = 1wread(1) '1.Stelle enthält den Familycode
      36. 1w_i = 1wread(1) '1.Stelle enthält den Familycode
      37. 1wreset
      38. 1wwrite &HCC 'Rom überspringen, nur 1 Sensor
      39. 1wwrite &HBE 'Temperatur auslesen
      40. Spp(1) = 1wread(9) 'Daten in ein Array lesen
      41. 'TEST
      42. 'Temp = &H10
      43. ' Spp(1) = &H36
      44. ' Spp(2) = &H00
      45. ' Spp(3) = &H4B
      46. ' Spp(4) = &H46
      47. ' Spp(5) = &HFF
      48. ' Spp(6) = &HFF
      49. ' Spp(7) = &H01
      50. ' Spp(8) = &H10
      51. ' Spp(9) = &HB4
      52. 'TEST ENDE
      53. 'Rechnung für Family Code 0x10
      54. Spp(1).0 = 0
      55. If 1w_i = &H28 Then
      56. Gosub Make_int
      57. '1w_t = Makeint(spp(1) , Spp(2))
      58. 1w_t = 1w_t * 10
      59. 1w_t = 1w_t / 16
      60. Else
      61. 'Rechnung für Family Code 0x28
      62. Gosub Make_int
      63. '1w_t = Makeint(spp(1) , Spp(2))
      64. 1w_t = 1w_t * 50
      65. 1w_t = 1w_t - 25
      66. 1w_t1 = Spp(8) - Spp(7)
      67. 1w_t1 = 1w_t1 * 100
      68. 1w_t1 = 1w_t1 / Spp(8)
      69. 1w_t = 1w_t + 1w_t1
      70. 1w_t = 1w_t / 10
      71. ' Temperatur in 0,1 Grad Schritten
      72. End If
      73. '1w_t = -234 'Test
      74. 'Ausgabe
      75. '(
      76. If Reset_taste = 0 Or Neustart = 0 Then
      77. Neustart = 1
      78. Maxtemp = 1w_t
      79. Mintemp = 1w_t
      80. End If
      81. ')
      82. If Reset_taste = 0 Then Gosub Wert
      83. If Neustart = 0 Then Gosub Wert
      84. If 1w_t > Maxtemp Then Maxtemp = 1w_t
      85. If 1w_t < Mintemp Then Mintemp = 1w_t
      86. If 1w_t < 0 Then
      87. Temperaturnegativ = 1
      88. Temp1 = Abs(1w_t)
      89. Else
      90. Temperaturnegativ = 0
      91. Temp1 = 1w_t
      92. End If
      93. Locate 1 , 1
      94. Lcd "Aktuell: "
      95. Gosub Darstellung
      96. Locate 2 , 1
      97. If Mintemp < 0 Then
      98. Temperaturnegativ = 1
      99. Temp1 = Abs(mintemp)
      100. Else
      101. Temperaturnegativ = 0
      102. Temp1 = Mintemp
      103. End If
      104. Lcd Chr(0) ' ; " "
      105. Gosub Darstellung
      106. If Maxtemp < 0 Then
      107. Temperaturnegativ = 1
      108. Temp1 = Abs(maxtemp)
      109. Else
      110. Temperaturnegativ = 0
      111. Temp1 = Maxtemp
      112. End If
      113. Locate 2 , 9
      114. Lcd Chr(1)
      115. Gosub Darstellung
      116. Loop
      117. Darstellung:
      118. Temp = Temp1 / 10
      119. If Temp < 100 Then
      120. If Temperaturnegativ = 1 Then
      121. Lcd "-"
      122. Else
      123. Lcd " "
      124. End If
      125. End If
      126. If Temp < 10 Then Lcd " "
      127. Lcd Temp ; ","
      128. Temp = Temp1 Mod 10
      129. Lcd Temp ; Chr(2) ; "C"
      130. Return
      131. Wert:
      132. Neustart = 1
      133. Maxtemp = 1w_t
      134. Mintemp = 1w_t
      135. Return
      136. Make_int:
      137. 1w_t = Makeint(spp(1) , Spp(2))
      138. Return
      139. End
      Alles anzeigen
      Hoffe mal das es noch Funktioniert.
    • Hallo,

      meine Platzsparregeln:
      1. Wenn Byte statt Bit auch geht, dann Byte.
      2. Größer durch Kleiner ersetzen.
      3. AND sowie OR vermeiden
      4. wait durch waitms tauschen und testen, was sparender ist.
      5. Wiederholungen durch Subs halbieren, dritteln, vierteln...
      6. statt ASCiI die Klammern nehmen.

      BASCOM-Quellcode: 20Bytes

      1. '$sim
      2. $regfile = "attiny2313.dat"
      3. $crystal = 16000000
      4. $hwstack = 34
      5. $swstack = 16
      6. $framesize = 24
      7. Reset_taste Alias Pind.1
      8. Portd.1 = 1
      9. Config 1wire = Portd.0 'achtung, externer Pullup 4k7
      10. Config Lcd = 16 * 2
      11. Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.1 , Db6 = Portb.0 , Db7 = Portd.6 , E = Portb.3 , Rs = Portb.4
      12. Initlcd
      13. Cursor Off , Noblink
      14. Deflcdchar 0 , 31 , 14 , 4 , 32 , 31 , 14 , 4 , 32 'Pfeil abwärts
      15. Deflcdchar 1 , 4 , 14 , 31 , 32 , 4 , 14 , 31 , 32 'Pfeil aufwärts
      16. Deflcdchar 2 , 14 , 10 , 14 , 32 , 32 , 32 , 32 , 32 'Gradzeichen
      17. Cls
      18. Dim Maxtemp As Integer
      19. Dim Mintemp As Integer
      20. Dim Temp As Integer
      21. Dim Temp1 As Integer
      22. Dim 1w_i As Byte
      23. Dim 1w_t1 As Integer
      24. Dim 1w_t As Integer
      25. Dim Spp(9) As Byte
      26. Dim Temperaturnegativ As Byte
      27. Dim Neustart As Byte
      28. Do
      29. 'Temperatur_starten
      30. 1wreset
      31. 1wwrite &HCC 'Skip ROM Kommando
      32. 1wwrite &H44 'Convert Temperatur Kommando
      33. Waitms 1000 'Wartezeit zum Wandeln
      34. 1wreset
      35. 1wwrite &H33 'Read ROM Kommando
      36. 'Temp = 1wread(1) '1.Stelle enthält den Familycode
      37. 1w_i = 1wread(1) '1.Stelle enthält den Familycode
      38. 1wreset
      39. 1wwrite &HCC 'Rom überspringen, nur 1 Sensor
      40. 1wwrite &HBE 'Temperatur auslesen
      41. Spp(1) = 1wread(9) 'Daten in ein Array lesen
      42. 'TEST
      43. 'Temp = &H10
      44. ' Spp(1) = &H36
      45. ' Spp(2) = &H00
      46. ' Spp(3) = &H4B
      47. ' Spp(4) = &H46
      48. ' Spp(5) = &HFF
      49. ' Spp(6) = &HFF
      50. ' Spp(7) = &H01
      51. ' Spp(8) = &H10
      52. ' Spp(9) = &HB4
      53. 'TEST ENDE
      54. 'Rechnung für Family Code 0x10
      55. Spp(1).0 = 0
      56. If 1w_i = &H28 Then
      57. 1w_t = Makeint(spp(1) , Spp(2))
      58. 1w_t = 1w_t * 10
      59. 1w_t = 1w_t / 16
      60. Else
      61. 'Rechnung für Family Code 0x28
      62. 1w_t = Makeint(spp(1) , Spp(2))
      63. 1w_t = 1w_t * 50
      64. 1w_t = 1w_t - 25
      65. 1w_t1 = Spp(8) - Spp(7)
      66. 1w_t1 = 1w_t1 * 100
      67. 1w_t1 = 1w_t1 / Spp(8)
      68. 1w_t = 1w_t + 1w_t1
      69. 1w_t = 1w_t / 10
      70. ' Temperatur in 0,1 Grad Schritten
      71. '
      72. End If
      73. '1w_t = -234 'Test
      74. 'Ausgabe
      75. If Reset_taste = 0 Then Gosub Rst
      76. If Neustart = 0 Then Gosub Rst
      77. If Maxtemp < 1w_t Then Maxtemp = 1w_t
      78. If 1w_t < Mintemp Then Mintemp = 1w_t
      79. If 1w_t < 0 Then
      80. Temperaturnegativ = 1
      81. Temp1 = Abs(1w_t)
      82. Else
      83. Temperaturnegativ = 0
      84. Temp1 = 1w_t
      85. End If
      86. Temp = Temp1 / 10
      87. Locate 1 , 1
      88. Lcd "Aktuell: "
      89. ' Lcd "Ist: "
      90. Gosub Darstellung
      91. Locate 2 , 1
      92. If Mintemp < 0 Then
      93. Temperaturnegativ = 1
      94. Temp1 = Abs(mintemp)
      95. Else
      96. Temperaturnegativ = 0
      97. Temp1 = Mintemp
      98. End If
      99. ' Temp = Temp1 / 10
      100. Lcd Chr(0) ' ; " "
      101. Gosub Darstellung
      102. If Maxtemp < 0 Then
      103. Temperaturnegativ = 1
      104. Temp1 = Abs(maxtemp)
      105. Else
      106. Temperaturnegativ = 0
      107. Temp1 = Maxtemp
      108. End If
      109. Locate 2 , 9
      110. ' Temp = Temp1 / 10
      111. Lcd Chr(1)
      112. Gosub Darstellung
      113. Loop
      114. Darstellung:
      115. Temp = Temp1 / 10
      116. If Temp < 100 Then
      117. If Temperaturnegativ = 1 Then
      118. Lcd "-"
      119. Else
      120. Lcd " "
      121. End If
      122. End If
      123. If Temp < 10 Then Lcd " "
      124. Lcd Temp ; ","
      125. Temp = Temp1 Mod 10
      126. Lcd Temp ; "{002}C"
      127. Return
      128. Rst:
      129. Neustart = 1
      130. Maxtemp = 1w_t
      131. Mintemp = 1w_t
      132. Return
      133. End
      Alles anzeigen