Read temp ok !

This commit is contained in:
adri 2018-06-10 10:27:14 +02:00
parent d0e6eb4795
commit 29bb1b4034
7 changed files with 241 additions and 382 deletions

View File

@ -137,20 +137,16 @@ MainReadTemp:
ldi YH,HIGH(TempWord) ldi YH,HIGH(TempWord)
rcall OWReset ; One wire reset rcall OWReset ; One wire reset
brts MainReadTemp ; If device not present go to MainLoop brts MainReadTemp ; If device not present go to MainLoop
rcall OWReset ; One wire reset
brts MainReadTemp ; If device not present go to MainLoop
rcall OWReset ; One wire reset
brts MainReadTemp ; If device not present go to MainLoop
ldi r16,SkipRom ; Write Skip Rom one wire in "single-drop" ldi r16,SkipRom ; Write Skip Rom one wire in "single-drop"
rcall OWWriteByte ; rcall OWWriteByte ;
ldi r16, RScratch ; Write ConvertCommand ldi r16, RScratch ; Write ConvertCommand
rcall OWWriteByte ; rcall OWWriteByte ;
rcall OWReadByte rcall OWReadByte
st Y+, r16 ; Store TEMPERATURE LSB(50h) byte to table, and increment pointer st Y+, r16 ; Store TEMPERATURE LSB(50h) byte to table, and increment pointer
mov r21, r16 ;rcall LCD_WriteHex8
rcall OWReadByte rcall OWReadByte
st Y+, r16 ; Store TEMPERATURE MSB(05h) byte to table, and increment pointer st Y+, r16 ; Store TEMPERATURE MSB(05h) byte to table, and increment pointer
mov r22, r16 ;rcall LCD_WriteHex8
ret ret
TempRequest: TempRequest:
@ -169,27 +165,25 @@ ConvertTempForLCD: ;r18 contiendra la partie décimal et xl la partie entiere
push r16 push r16
push r17 push r17
ldi YL,LOW(TempWord) ldi YL,LOW(TempWord)
ldi YH,HIGH(TempWord) ldi YH,HIGH(TempWord)
ld XL, Y+ ld XL, Y+
ld XH, Y+ ld XH, Y+
lsr XL lsr XL
lsr XL ;Sup des deux bit inutilisé lsr XL ;Sup des deux bit inutilisé
ldi r16, 0x03 mov r16, XL
mov r18, XL ldi r18, 0x03 ;Masque des 3 bit de fraction
AND r18, r16 AND r18, XL ;3bit fraction
ldi r16, 25 ldi r16, 25
mul r18, r16 mul r18, r16
movw r18, r0 movw r18, r0
lsr XL lsr XL
lsr XL ;Sup des deux bit de fraction lsr XL ;Sup des deux bit de fraction
ldi r16, 15 ldi r16, 0b00001111
and XH,r16 and XH,r16
ROR XH SWAP XH
ROR XH
ROR XH
ROR XH
ROR XH ; xh>>4+1(+1 pour le carry)
or XL,XH or XL,XH
;mov r16, R18
;rcall LCD_WriteHex8
pop r17 pop r17
pop r16 pop r16

View File

@ -1,5 +1,5 @@
:020000020000FC :020000020000FC
:0200000070C1CD :0200000068C1D5
:0200040018954D :0200040018954D
:02000800189549 :02000800189549
:02000C00189545 :02000C00189545
@ -50,30 +50,24 @@
:1001D400A4E0209AC8DF2098B0E0A4E1C4DFE8944A :1001D400A4E0209AC8DF2098B0E0A4E1C4DFE8944A
:1001E40018996894B0E0A8ECBEDF08940EF08894E7 :1001E40018996894B0E0A8ECBEDF08940EF08894E7
:1001F40008951F9310E0EBDF079513951830D9F796 :1001F40008951F9310E0EBDF079513951830D9F796
:100204001F910895C8E0D1E0BCDFE6F3BADFD6F36E :100204001F910895C8E0D1E0BCDFE6F30CECD6DF23
:10021400B8DFC6F30CECD2DF0EEBD0DFEADF0993D4 :100214000EEBD4DFEEDF0993ECDF09930895B1DF31
:10022400502FE7DF0993602F0895ABDF5EF30CECEA :100224008EF30CECCBDF04E4C9DF0CEB9FDF1895F5
:10023400C5DF04E4C3DF0CEB99DF18950F931F931C :100234000F931F93C8E0D1E0A991B991A695A69513
:10024400C8E0D1E0A991B991A695A69503E02A2F1B :100244000A2F23E02A2309E1209F9001A695A69571
:10025400202309E1209F9001A695A6950FE0B023E5 :100254000FE0B023B295AB2B1F910F9108950F932C
:10026400B795B795B795B795B795AB2B1F910F91E8 :100264001F932F930F9318E02091100102270795F5
:1002740008950F931F932F930F9318E0209110016B :100274000091100110F428E1022707950093100162
:10028400022707950091100110F428E10227079531 :100284000F9106950F931A9579F70F912F911F915E
:10029400009310010F9106950F931A9579F70F911A :100294000F9108950F9300E0009310010F910895BA
:1002A4002F911F910F9108950F9300E00093100177 :1002A40000911001089574656D7020726561646534
:1002B4000F91089500911001089569427574746F47 :1002B40072207E302E32350000006176722D6D631F
:1002C4006E2052656164657200006176722D6D6303 :1002C400752E6478702E706C00002E0000000FEF05
:1002D400752E6478702E706C00002E0000000FEFF5 :1002D4000DBF29DF01E021DFEAEAF2E0F6DE01E406
:1002E4000DBF21DF01E019DFEEEBF2E0EEDE01E409 :1002E4001CDF4FDFF6F30CEC69DF0EE467DF002759
:1002F40014DF47DFF6F30CEC61DF0EE45FDF002769 :1002F40065DF64DF0FE362DF01E40FDF42DFE6F373
:100304005DDF5CDF0FE35ADF01E407DF3ADFE6F38A :100304008EDF80DF95DF0000000000000F930A2FCE
:100314008CDF78DF93DF0C94A4016BDF0030A1F352 :1003140008D0EBDE022F05D0E8DE0C947E01B1F7A5
:10032400A8DFC0E0D1E0099317E063DFA2DF0993FF :10032400EBCF5F9355270A5010F0505FFCCF065F68
:100334001A95D9F7BFDF003039F700E4EEDEC0E0EC :06033400050F5F91089522
:10034400D1E012E00F930A2F0F9330EF032320D054
:100354000695069506950695BEDE0F9119D02FE0F9
:100364000223B9DE022F0F9330EF032311D0069539
:10037400069506950695AFDE0F910AD02FE002236D
:10038400AADE0000000000000C948601D9F6BCCF60
:1003940055270A5010F0505FFCCF065F050F0895F3
:00000001FF :00000001FF

View File

@ -1,5 +1,5 @@
AVRASM ver. 2.2.7 C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\main.asm Sun Jun 10 03:42:22 2018 AVRASM ver. 2.2.7 C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\main.asm Sun Jun 10 10:18:03 2018
[builtin](2): Including file 'C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.150\avrasm\inc\m328pdef.inc' [builtin](2): Including file 'C:/Program Files (x86)\Atmel\Studio\7.0\Packs\atmel\ATmega_DFP\1.2.150\avrasm\inc\m328pdef.inc'
C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\main.asm(34): Including file 'C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\vectors.asm' C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\main.asm(34): Including file 'C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\vectors.asm'
@ -1039,7 +1039,7 @@ C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM
#include "vectors.asm" #include "vectors.asm"
.org 0 ; Reset .org 0 ; Reset
000000 c170 rjmp ProgramEntryPoint 000000 c168 rjmp ProgramEntryPoint
.org INT0addr .org INT0addr
000002 9518 reti 000002 9518 reti
.org INT1addr .org INT1addr
@ -1598,63 +1598,57 @@ C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM
000105 e0d1 ldi YH,HIGH(TempWord) 000105 e0d1 ldi YH,HIGH(TempWord)
000106 dfbc rcall OWReset ; One wire reset 000106 dfbc rcall OWReset ; One wire reset
000107 f3e6 brts MainReadTemp ; If device not present go to MainLoop 000107 f3e6 brts MainReadTemp ; If device not present go to MainLoop
000108 dfba rcall OWReset ; One wire reset 000108 ec0c ldi r16,SkipRom ; Write Skip Rom one wire in "single-drop"
000109 f3d6 brts MainReadTemp ; If device not present go to MainLoop 000109 dfd6 rcall OWWriteByte ;
00010a dfb8 rcall OWReset ; One wire reset 00010a eb0e ldi r16, RScratch ; Write ConvertCommand
00010b f3c6 brts MainReadTemp ; If device not present go to MainLoop 00010b dfd4 rcall OWWriteByte ;
00010c ec0c ldi r16,SkipRom ; Write Skip Rom one wire in "single-drop" 00010c dfee rcall OWReadByte
00010d dfd2 rcall OWWriteByte ; 00010d 9309 st Y+, r16 ; Store TEMPERATURE LSB(50h) byte to table, and increment pointer
00010e eb0e ldi r16, RScratch ; Write ConvertCommand ;rcall LCD_WriteHex8
00010f dfd0 rcall OWWriteByte ; 00010e dfec rcall OWReadByte
000110 dfea rcall OWReadByte 00010f 9309 st Y+, r16 ; Store TEMPERATURE MSB(05h) byte to table, and increment pointer
000111 9309 st Y+, r16 ; Store TEMPERATURE LSB(50h) byte to table, and increment pointer ;rcall LCD_WriteHex8
000112 2f50 mov r21, r16 000110 9508 ret
000113 dfe7 rcall OWReadByte
000114 9309 st Y+, r16 ; Store TEMPERATURE MSB(05h) byte to table, and increment pointer
000115 2f60 mov r22, r16
000116 9508 ret
TempRequest: TempRequest:
000117 dfab rcall OWReset ; One wire reset 000111 dfb1 rcall OWReset ; One wire reset
000118 f35e brts MainReadTemp ; If device not present go to MainLoop 000112 f38e brts MainReadTemp ; If device not present go to MainLoop
000119 ec0c ldi r16,SkipRom ; Write Skip Rom one wire in "single-drop" 000113 ec0c ldi r16,SkipRom ; Write Skip Rom one wire in "single-drop"
00011a dfc5 rcall OWWriteByte ; 000114 dfcb rcall OWWriteByte ;
00011b e404 ldi r16, ConvertTemp ; Write ConvertCommand 000115 e404 ldi r16, ConvertTemp ; Write ConvertCommand
00011c dfc3 rcall OWWriteByte ; 000116 dfc9 rcall OWWriteByte ;
00011d eb0c ldi r16, 188 000117 eb0c ldi r16, 188
00011e df99 rcall WaitMiliseconds 000118 df9f rcall WaitMiliseconds
00011f 9518 reti 000119 9518 reti
ConvertTempForLCD: ;r18 contiendra la partie décimal et xl la partie entiere ConvertTempForLCD: ;r18 contiendra la partie décimal et xl la partie entiere
000120 930f push r16 00011a 930f push r16
000121 931f push r17 00011b 931f push r17
000122 e0c8 ldi YL,LOW(TempWord) 00011c e0c8 ldi YL,LOW(TempWord)
000123 e0d1 ldi YH,HIGH(TempWord) 00011d e0d1 ldi YH,HIGH(TempWord)
000124 91a9 ld XL, Y+ 00011e 91a9 ld XL, Y+
000125 91b9 ld XH, Y+ 00011f 91b9 ld XH, Y+
000126 95a6 lsr XL 000120 95a6 lsr XL
000127 95a6 lsr XL ;Sup des deux bit inutilisé 000121 95a6 lsr XL ;Sup des deux bit inutilisé
000128 e003 ldi r16, 0x03 000122 2f0a mov r16, XL
000129 2f2a mov r18, XL 000123 e023 ldi r18, 0x03 ;Masque des 3 bit de fraction
00012a 2320 AND r18, r16 000124 232a AND r18, XL ;3bit fraction
00012b e109 ldi r16, 25 000125 e109 ldi r16, 25
00012c 9f20 mul r18, r16 000126 9f20 mul r18, r16
00012d 0190 movw r18, r0 000127 0190 movw r18, r0
00012e 95a6 lsr XL 000128 95a6 lsr XL
00012f 95a6 lsr XL ;Sup des deux bit de fraction 000129 95a6 lsr XL ;Sup des deux bit de fraction
000130 e00f ldi r16, 15 00012a e00f ldi r16, 0b00001111
000131 23b0 and XH,r16 00012b 23b0 and XH,r16
000132 95b7 ROR XH 00012c 95b2 SWAP XH
000133 95b7 ROR XH 00012d 2bab or XL,XH
000134 95b7 ROR XH ;mov r16, R18
000135 95b7 ROR XH ;rcall LCD_WriteHex8
000136 95b7 ROR XH ; xh>>4+1(+1 pour le carry)
000137 2bab or XL,XH
000138 911f pop r17 00012e 911f pop r17
000139 910f pop r16 00012f 910f pop r16
00013a 9508 ret 000130 9508 ret
#include "crc8.asm" #include "crc8.asm"
; CRC8 computing functions ; CRC8 computing functions
@ -1677,49 +1671,49 @@ C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM
; Update crc value ; Update crc value
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
CRC8Update: CRC8Update:
00013b 930f push r16 000131 930f push r16
00013c 931f push r17 000132 931f push r17
00013d 932f push r18 000133 932f push r18
00013e 930f push r16 000134 930f push r16
00013f e018 ldi r17, 8 000135 e018 ldi r17, 8
CRC8L: CRC8L:
000140 9120 0110 lds r18, _crc 000136 9120 0110 lds r18, _crc
000142 2702 eor r16, r18 000138 2702 eor r16, r18
000143 9507 ror r16 000139 9507 ror r16
000144 9100 0110 lds r16, _crc 00013a 9100 0110 lds r16, _crc
000146 f410 brcc CRC8zero 00013c f410 brcc CRC8zero
000147 e128 ldi r18, 0x18 00013d e128 ldi r18, 0x18
000148 2702 eor r16, r18 00013e 2702 eor r16, r18
CRC8zero: CRC8zero:
000149 9507 ror r16 00013f 9507 ror r16
00014a 9300 0110 sts _crc, r16 000140 9300 0110 sts _crc, r16
00014c 910f pop r16 000142 910f pop r16
00014d 9506 lsr r16 000143 9506 lsr r16
00014e 930f push r16 000144 930f push r16
00014f 951a dec r17 000145 951a dec r17
000150 f779 brne CRC8L 000146 f779 brne CRC8L
000151 910f pop r16 000147 910f pop r16
000152 912f pop r18 000148 912f pop r18
000153 911f pop r17 000149 911f pop r17
000154 910f pop r16 00014a 910f pop r16
000155 9508 ret 00014b 9508 ret
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
; Clear crc value ; Clear crc value
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
CRC8Init: CRC8Init:
000156 930f push r16 00014c 930f push r16
000157 e000 ldi r16,0 00014d e000 ldi r16,0
000158 9300 0110 sts _crc, r16 00014e 9300 0110 sts _crc, r16
00015a 910f pop r16 000150 910f pop r16
00015b 9508 ret 000151 9508 ret
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
; Copy crc value to r16 ; Copy crc value to r16
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
GetCRC8: GetCRC8:
00015c 9100 0110 lds r16, _crc 000152 9100 0110 lds r16, _crc
00015e 9508 ret 000154 9508 ret
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
; End of crc8.asm file ; End of crc8.asm file
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
@ -1727,151 +1721,90 @@ C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM
; Constants definition ; Constants definition
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
Text1 : Text1 :
00015f 4269 000155 6574
000160 7475 000156 706d
000161 6f74 000157 7220
000162 206e 000158 6165
000163 6552 000159 6564
000164 6461 00015a 2072
000165 7265 00015b 307e
000166 0000 .db "iButton Reader",0,0 00015c 322e
00015d 0035
C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\main.asm(43): warning: .cseg .db misalignment - padding zero byte
00015e 0000 .db "temp reader ~0.25",0,0
Text2 : Text2 :
000167 7661 00015f 7661
000168 2d72 000160 2d72
000169 636d 000161 636d
00016a 2e75 000162 2e75
00016b 7864 000163 7864
00016c 2e70 000164 2e70
00016d 6c70 000165 6c70
00016e 0000 .db "avr-mcu.dxp.pl",0,0 000166 0000 .db "avr-mcu.dxp.pl",0,0
Tp : Tp :
00016f 002e 000167 002e
C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\main.asm(47): warning: .cseg .db misalignment - padding zero byte C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\main.asm(47): warning: .cseg .db misalignment - padding zero byte
000170 0000 .db ".",0,0 000168 0000 .db ".",0,0
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
; Program entry point ; Program entry point
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
ProgramEntryPoint: ProgramEntryPoint:
000171 ef0f ldi r16, LOW(RAMEND) ; Initialize stack pointer 000169 ef0f ldi r16, LOW(RAMEND) ; Initialize stack pointer
000172 bf0d out SPL, r16 ; 00016a bf0d out SPL, r16 ;
000173 df21 rcall LCD_Init ; Initialize LCD 00016b df29 rcall LCD_Init ; Initialize LCD
000174 e001 ldi r16, (HD44780_LINE0 + 1) ; 00016c e001 ldi r16, (HD44780_LINE0 + 1) ;
000175 df19 rcall LCD_SetAddressDD ; Set Display Data address to (0,1) 00016d df21 rcall LCD_SetAddressDD ; Set Display Data address to (0,1)
000176 ebee ldi ZL, LOW(Text1 << 1) ; Load string address to Z 00016e eaea ldi ZL, LOW(Text1 << 1) ; Load string address to Z
000177 e0f2 ldi ZH, HIGH(Text1<< 1) ; 00016f e0f2 ldi ZH, HIGH(Text1<< 1) ;
000178 deee rcall LCD_WriteString ; Display string 000170 def6 rcall LCD_WriteString ; Display string
000179 e401 ldi r16, (HD44780_LINE1 + 1) ; 000171 e401 ldi r16, (HD44780_LINE1 + 1) ;
00017a df14 rcall LCD_SetAddressDD ; Set Display Data address to (1,1); 000172 df1c rcall LCD_SetAddressDD ; Set Display Data address to (1,1);
;ldi ZL, LOW(Text2 << 1) ;
;ldi ZH, HIGH(Text2<< 1) ; Load string address to Z
;rcall LCD_WriteString ; Display string
ConfigResolTo10Bits: ConfigResolTo10Bits:
00017b df47 rcall OWReset 000173 df4f rcall OWReset
00017c f3f6 brts ConfigResolTo10Bits 000174 f3f6 brts ConfigResolTo10Bits
00017d ec0c ldi r16, SkipRom ; Write Skip Rom one wire in "single-drop" 000175 ec0c ldi r16, SkipRom ; Write Skip Rom one wire in "single-drop"
00017e df61 rcall OWWriteByte 000176 df69 rcall OWWriteByte
00017f e40e ldi r16, WScratch 000177 e40e ldi r16, WScratch
000180 df5f rcall OWWriteByte 000178 df67 rcall OWWriteByte
000181 2700 clr r16 000179 2700 clr r16
000182 df5d rcall OWWriteByte ;th,tl 00017a df65 rcall OWWriteByte ;th,tl
000183 df5c rcall OWWriteByte ;th,tl 00017b df64 rcall OWWriteByte ;th,tl
000184 e30f ldi r16, 63 00017c e30f ldi r16, 63
000185 df5a rcall OWWriteByte ;resol 00017d df62 rcall OWWriteByte ;resol
MainLoop: MainLoop:
000186 e401 ldi r16, (HD44780_LINE1 + 1) ; 00017e e401 ldi r16, (HD44780_LINE1 + 1) ;
000187 df07 rcall LCD_SetAddressDD ; Set Display Data address to (1,1); 00017f df0f rcall LCD_SetAddressDD ; Set Display Data address to (1,1);
000188 df3a rcall OWReset ; One wire reset 000180 df42 rcall OWReset ; One wire reset
000189 f3e6 brts MainLoop ; If device not present go to MainLoop 000181 f3e6 brts MainLoop ; If device not present go to MainLoop
00018a df8c rcall TempRequest 000182 df8e rcall TempRequest
00018b df78 rcall MainReadTemp 000183 df80 rcall MainReadTemp
00018c df93 rcall ConvertTempForLCD 000184 df95 rcall ConvertTempForLCD
000185 0000 nop
000186 0000 nop
000187 0000 nop
;jmp PC-1;LoadLoop
;rcall CRC8Init ; Initialize CRC8 value
00018d 940c 01a4 jmp LoadLoop
00018f df6b rcall OWReadByte ; Read first byte (Family ID)
000190 3000 cpi r16,0 ; If first byte equal to zero, go to MainLoop
000191 f3a1 breq MainLoop ; (short circuit on one wire bus)
000192 dfa8 rcall CRC8Update ; Update the CRC
000193 e0c0 ldi YL, LOW(SerialNumber) ;
000194 e0d1 ldi YH, HIGH(SerialNumber) ; Load to Y address of SerialNumber table
000195 9309 st Y+, r16 ; Store first byte to table, and increment pointer
000196 e017 ldi r17, 7 ; 7 bytes remaining
StoreLoop:
000197 df63 rcall OWReadByte ; read next byte
000198 dfa2 rcall CRC8Update ; update the CRC
000199 9309 st Y+, r16 ; store next byte to table, and increment pointer
00019a 951a dec r17 ; decrement loop counter
00019b f7d9 brne StoreLoop ; if greater than zero, jump to StoreLoop
00019c dfbf rcall GetCRC8 ; Read computet CRC8
00019d 3000 cpi r16,0 ; copmare with zero
00019e f739 brne MainLoop ; if not equal, jump to MainLoop (bad CRC)
; else
00019f e400 ldi r16, (HD44780_LINE1 + 0) ;
0001a0 deee rcall LCD_SetAddressDD ; Set DisplayData address to (0,1)
0001a1 e0c0 ldi YL, LOW(SerialNumber) ;
0001a2 e0d1 ldi YH, HIGH(SerialNumber) ; Load to Y address of SerialNumber table
0001a3 e012 ldi r17,2 ; 8 digits to display
LoadLoop: LoadLoop:
0001a4 930f push r16 000188 930f push r16
0001a5 2f0a mov r16, XL ; load to r16 byte from table 000189 2f0a mov r16, XL ; chargement partie entière
00018a d008 rcall bin2bcd8
0001a6 930f push r16 00018b deeb rcall LCD_WriteHex8 ; display it on LCD in HEX
0001a7 ef30 ldi r19,0xF0 00018c 2f02 mov r16, r18 ; load DEC
0001a8 2303 and r16,r19 00018d d005 rcall bin2bcd8
0001a9 d020 rcall bin2bcd8 00018e dee8 rcall LCD_WriteHex8 ; display it on LCD in HEX
0001aa 9506 lsr r16 00018f 940c 017e jmp MainLoop
0001ab 9506 lsr r16 000191 f7b1 brne LoadLoop ; if not zero, jump to LoadLoop
0001ac 9506 lsr r16 000192 cfeb rjmp MainLoop ; jump to MainLoop
0001ad 9506 lsr r16
0001ae debe rcall LCD_WriteHexDigit ; display it on LCD in HEX
0001af 910f pop r16
0001b0 d019 rcall bin2bcd8
0001b1 e02f ldi r18,0x0F
0001b2 2302 and r16,r18
0001b3 deb9 rcall LCD_WriteHexDigit ; display it on LCD in HEX
0001b4 2f02 mov r16, r18 ; load to r16 byte from table
0001b5 930f push r16
0001b6 ef30 ldi r19,0xF0
0001b7 2303 and r16,r19
0001b8 d011 rcall bin2bcd8
0001b9 9506 lsr r16
0001ba 9506 lsr r16
0001bb 9506 lsr r16
0001bc 9506 lsr r16
0001bd deaf rcall LCD_WriteHexDigit ; display it on LCD in HEX
0001be 910f pop r16
0001bf d00a rcall bin2bcd8
0001c0 e02f ldi r18,0x0F
0001c1 2302 and r16,r18
0001c2 deaa rcall LCD_WriteHexDigit ; display it on LCD in HEX
0001c3 0000 nop
0001c4 0000 nop
0001c5 0000 nop
0001c6 940c 0186 jmp MainLoop
0001c8 f6d9 brne LoadLoop ; if not zero, jump to LoadLoop
0001c9 cfbc rjmp MainLoop ; jump to MainLoop
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
; End of file ; End of file
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
@ -1889,15 +1822,17 @@ C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM
;.def tBCD = r21 ;add this to main asm file ;.def tBCD = r21 ;add this to main asm file
; ;
bin2bcd8: bin2bcd8:
0001ca 2755 clr r21 ;clear temp reg 000193 935f push r21
000194 2755 clr r21 ;clear temp reg
bBCD8_1: bBCD8_1:
0001cb 500a subi r16,10 ;input = input - 10 000195 500a subi r16,10 ;input = input - 10
0001cc f010 brcs bBCD8_2 ;abort if carry set 000196 f010 brcs bBCD8_2 ;abort if carry set
0001cd 5f50 subi r21,-$10 ;tBCD = tBCD + 10 000197 5f50 subi r21,-$10 ;tBCD = tBCD + 10
0001ce cffc rjmp bBCD8_1 ;loop again 000198 cffc rjmp bBCD8_1 ;loop again
bBCD8_2: bBCD8_2:
0001cf 5f06 subi r16,-10 ;compensate extra subtraction 000199 5f06 subi r16,-10 ;compensate extra subtraction
0001d0 0f05 add r16,r21 00019a 0f05 add r16,r21
00019b 915f pop r21
RESOURCE USE INFORMATION RESOURCE USE INFORMATION
@ -1915,40 +1850,40 @@ counted separately from r26..r31 here.
.dseg memory usage only counts static data declared with .byte .dseg memory usage only counts static data declared with .byte
"ATmega328P" register use summary: "ATmega328P" register use summary:
x : 0 y : 6 z : 1 r0 : 1 r1 : 0 r2 : 0 r3 : 0 r4 : 0 x : 0 y : 4 z : 1 r0 : 1 r1 : 0 r2 : 0 r3 : 0 r4 : 0
r5 : 0 r6 : 0 r7 : 0 r8 : 0 r9 : 0 r10: 0 r11: 0 r12: 0 r5 : 0 r6 : 0 r7 : 0 r8 : 0 r9 : 0 r10: 0 r11: 0 r12: 0
r13: 0 r14: 3 r15: 6 r16: 117 r17: 32 r18: 17 r19: 4 r20: 0 r13: 0 r14: 3 r15: 6 r16: 93 r17: 29 r18: 13 r19: 0 r20: 0
r21: 4 r22: 1 r23: 0 r24: 0 r25: 0 r26: 21 r27: 21 r28: 4 r21: 5 r22: 0 r23: 0 r24: 0 r25: 0 r26: 22 r27: 17 r28: 2
r29: 4 r30: 1 r31: 1 r29: 2 r30: 1 r31: 1
Registers used: 17 out of 35 (48.6%) Registers used: 15 out of 35 (42.9%)
"ATmega328P" instruction use summary: "ATmega328P" instruction use summary:
.lds : 0 .sts : 0 adc : 0 add : 5 adiw : 0 and : 6 .lds : 0 .sts : 0 adc : 0 add : 5 adiw : 0 and : 2
andi : 2 asr : 0 bclr : 0 bld : 0 brbc : 0 brbs : 0 andi : 2 asr : 0 bclr : 0 bld : 0 brbc : 0 brbs : 0
brcc : 3 brcs : 1 break : 0 breq : 2 brge : 0 brhc : 0 brcc : 3 brcs : 1 break : 0 breq : 1 brge : 0 brhc : 0
brhs : 0 brid : 0 brie : 0 brlo : 1 brlt : 0 brmi : 0 brhs : 0 brid : 0 brie : 0 brlo : 1 brlt : 0 brmi : 0
brne : 12 brpl : 0 brsh : 0 brtc : 0 brts : 7 brvc : 0 brne : 10 brpl : 0 brsh : 0 brtc : 0 brts : 5 brvc : 0
brvs : 0 bset : 0 bst : 0 call : 0 cbi : 12 cbr : 0 brvs : 0 bset : 0 bst : 0 call : 0 cbi : 12 cbr : 0
clc : 2 clh : 0 cli : 0 cln : 0 clr : 4 cls : 0 clc : 2 clh : 0 cli : 0 cln : 0 clr : 4 cls : 0
clt : 2 clv : 0 clz : 0 com : 0 cp : 0 cpc : 0 clt : 2 clv : 0 clz : 0 com : 0 cp : 0 cpc : 0
cpi : 7 cpse : 0 dec : 6 eor : 2 fmul : 0 fmuls : 0 cpi : 5 cpse : 0 dec : 5 eor : 2 fmul : 0 fmuls : 0
fmulsu: 0 icall : 0 ijmp : 0 in : 0 inc : 3 jmp : 2 fmulsu: 0 icall : 0 ijmp : 0 in : 0 inc : 3 jmp : 1
ld : 2 ldd : 0 ldi : 77 lds : 3 lpm : 1 lsl : 0 ld : 2 ldd : 0 ldi : 66 lds : 3 lpm : 1 lsl : 0
lsr : 13 mov : 5 movw : 1 mul : 1 muls : 0 mulsu : 0 lsr : 5 mov : 3 movw : 1 mul : 1 muls : 0 mulsu : 0
neg : 0 nop : 3 or : 1 ori : 2 out : 1 pop : 18 neg : 0 nop : 3 or : 1 ori : 2 out : 1 pop : 17
push : 19 rcall : 77 ret : 25 reti : 26 rjmp : 7 rol : 2 push : 18 rcall : 65 ret : 25 reti : 26 rjmp : 7 rol : 2
ror : 9 sbc : 0 sbci : 0 sbi : 15 sbic : 1 sbis : 1 ror : 4 sbc : 0 sbci : 0 sbi : 15 sbic : 1 sbis : 1
sbiw : 1 sbr : 0 sbrc : 4 sbrs : 4 sec : 2 seh : 0 sbiw : 1 sbr : 0 sbrc : 4 sbrs : 4 sec : 2 seh : 0
sei : 0 sen : 0 ser : 0 ses : 0 set : 2 sev : 0 sei : 0 sen : 0 ser : 0 ses : 0 set : 2 sev : 0
sez : 0 sleep : 0 spm : 0 st : 4 std : 0 sts : 2 sez : 0 sleep : 0 spm : 0 st : 2 std : 0 sts : 2
sub : 2 subi : 3 swap : 3 tst : 0 wdr : 0 sub : 2 subi : 3 swap : 4 tst : 0 wdr : 0
Instructions used: 51 out of 113 (45.1%) Instructions used: 51 out of 113 (45.1%)
"ATmega328P" memory use summary [bytes]: "ATmega328P" memory use summary [bytes]:
Segment Begin End Code Data Used Size Use% Segment Begin End Code Data Used Size Use%
--------------------------------------------------------------- ---------------------------------------------------------------
[.cseg] 0x000000 0x0003a4 846 36 882 32768 2.7% [.cseg] 0x000000 0x00033a 736 40 776 32768 2.4%
[.dseg] 0x000100 0x000111 0 17 17 2048 0.8% [.dseg] 0x000100 0x000111 0 17 17 2048 0.8%
[.eseg] 0x000000 0x000000 0 0 0 1024 0.0% [.eseg] 0x000000 0x000000 0 0 0 1024 0.0%
Assembly complete, 0 errors, 3 warnings Assembly complete, 0 errors, 4 warnings

View File

@ -1,5 +1,5 @@
AVRASM ver. 2.2.7 C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\main.asm Sun Jun 10 03:42:22 2018 AVRASM ver. 2.2.7 C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\main.asm Sun Jun 10 10:18:03 2018
EQU SIGNATURE_000 0000001e EQU SIGNATURE_000 0000001e
@ -696,7 +696,7 @@ EQU TWIaddr 00000030
EQU SPMRaddr 00000032 EQU SPMRaddr 00000032
EQU INT_VECTORS_SIZE 00000034 EQU INT_VECTORS_SIZE 00000034
DSEG SerialNumber 00000100 DSEG SerialNumber 00000100
CSEG ProgramEntryPoint 00000171 CSEG ProgramEntryPoint 00000169
EQU LCD_PORT 0000000b EQU LCD_PORT 0000000b
EQU LCD_DDR 0000000a EQU LCD_DDR 0000000a
EQU LCD_PIN 00000009 EQU LCD_PIN 00000009
@ -752,21 +752,20 @@ CSEG OWReadBitEnd 000000fa
CSEG OWReadByte 000000fb CSEG OWReadByte 000000fb
CSEG OWReadLoop 000000fd CSEG OWReadLoop 000000fd
CSEG MainReadTemp 00000104 CSEG MainReadTemp 00000104
CSEG TempRequest 00000117 CSEG TempRequest 00000111
CSEG ConvertTempForLCD 00000120 CSEG ConvertTempForLCD 0000011a
DSEG _crc 00000110 DSEG _crc 00000110
CSEG CRC8Update 0000013b CSEG CRC8Update 00000131
CSEG CRC8L 00000140 CSEG CRC8L 00000136
CSEG CRC8zero 00000149 CSEG CRC8zero 0000013f
CSEG CRC8Init 00000156 CSEG CRC8Init 0000014c
CSEG GetCRC8 0000015c CSEG GetCRC8 00000152
CSEG Text1 0000015f CSEG Text1 00000155
CSEG Text2 00000167 CSEG Text2 0000015f
CSEG Tp 0000016f CSEG Tp 00000167
CSEG ConfigResolTo10Bits 0000017b CSEG ConfigResolTo10Bits 00000173
CSEG MainLoop 00000186 CSEG MainLoop 0000017e
CSEG LoadLoop 000001a4 CSEG LoadLoop 00000188
CSEG StoreLoop 00000197 CSEG bin2bcd8 00000193
CSEG bin2bcd8 000001ca CSEG bBCD8_1 00000195
CSEG bBCD8_1 000001cb CSEG bBCD8_2 00000199
CSEG bBCD8_2 000001cf

Binary file not shown.

View File

@ -67,8 +67,8 @@
<OWReadByte><FILE>C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\1-wire.asm</FILE><LINE>120</LINE></OWReadByte> <OWReadByte><FILE>C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\1-wire.asm</FILE><LINE>120</LINE></OWReadByte>
<OWReadLoop><FILE>C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\1-wire.asm</FILE><LINE>123</LINE></OWReadLoop> <OWReadLoop><FILE>C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\1-wire.asm</FILE><LINE>123</LINE></OWReadLoop>
<MainReadTemp><FILE>C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\1-wire.asm</FILE><LINE>134</LINE></MainReadTemp> <MainReadTemp><FILE>C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\1-wire.asm</FILE><LINE>134</LINE></MainReadTemp>
<TempRequest><FILE>C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\1-wire.asm</FILE><LINE>156</LINE></TempRequest> <TempRequest><FILE>C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\1-wire.asm</FILE><LINE>152</LINE></TempRequest>
<ConvertTempForLCD><FILE>C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\1-wire.asm</FILE><LINE>168</LINE></ConvertTempForLCD> <ConvertTempForLCD><FILE>C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\1-wire.asm</FILE><LINE>164</LINE></ConvertTempForLCD>
<_crc><FILE>C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\crc8.asm</FILE><LINE>13</LINE></_crc> <_crc><FILE>C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\crc8.asm</FILE><LINE>13</LINE></_crc>
<CRC8Update><FILE>C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\crc8.asm</FILE><LINE>21</LINE></CRC8Update> <CRC8Update><FILE>C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\crc8.asm</FILE><LINE>21</LINE></CRC8Update>
<CRC8L><FILE>C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\crc8.asm</FILE><LINE>28</LINE></CRC8L> <CRC8L><FILE>C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\crc8.asm</FILE><LINE>28</LINE></CRC8L>
@ -78,12 +78,11 @@
<Text1><FILE>C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\main.asm</FILE><LINE>42</LINE></Text1> <Text1><FILE>C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\main.asm</FILE><LINE>42</LINE></Text1>
<Text2><FILE>C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\main.asm</FILE><LINE>44</LINE></Text2> <Text2><FILE>C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\main.asm</FILE><LINE>44</LINE></Text2>
<Tp><FILE>C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\main.asm</FILE><LINE>46</LINE></Tp> <Tp><FILE>C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\main.asm</FILE><LINE>46</LINE></Tp>
<ConfigResolTo10Bits><FILE>C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\main.asm</FILE><LINE>70</LINE></ConfigResolTo10Bits> <ConfigResolTo10Bits><FILE>C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\main.asm</FILE><LINE>67</LINE></ConfigResolTo10Bits>
<MainLoop><FILE>C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\main.asm</FILE><LINE>85</LINE></MainLoop> <MainLoop><FILE>C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\main.asm</FILE><LINE>82</LINE></MainLoop>
<LoadLoop><FILE>C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\main.asm</FILE><LINE>126</LINE></LoadLoop> <LoadLoop><FILE>C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\main.asm</FILE><LINE>97</LINE></LoadLoop>
<StoreLoop><FILE>C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\main.asm</FILE><LINE>109</LINE></StoreLoop> <bin2bcd8><FILE>C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\main.asm</FILE><LINE>124</LINE></bin2bcd8>
<bin2bcd8><FILE>C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\main.asm</FILE><LINE>188</LINE></bin2bcd8> <bBCD8_1><FILE>C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\main.asm</FILE><LINE>127</LINE></bBCD8_1>
<bBCD8_1><FILE>C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\main.asm</FILE><LINE>190</LINE></bBCD8_1> <bBCD8_2><FILE>C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\main.asm</FILE><LINE>132</LINE></bBCD8_2>
<bBCD8_2><FILE>C:\Users\adrie\Nextcloud\iset\2IS\2IS\ASM JR\ASM18b20AvecLCD\ASM18b20AvecLCD\ASM18b20AvecLCD\main.asm</FILE><LINE>195</LINE></bBCD8_2>
</LABELS> </LABELS>
</ASSEMBLER_INFO> </ASSEMBLER_INFO>

View File

@ -40,7 +40,7 @@ SerialNumber: .byte 8
; Constants definition ; Constants definition
;------------------------------------------------------------------------------ ;------------------------------------------------------------------------------
Text1 : Text1 :
.db "iButton Reader",0,0 .db "temp reader ~0.25",0,0
Text2 : Text2 :
.db "avr-mcu.dxp.pl",0,0 .db "avr-mcu.dxp.pl",0,0
Tp : Tp :
@ -64,9 +64,6 @@ ProgramEntryPoint:
ldi r16, (HD44780_LINE1 + 1) ; ldi r16, (HD44780_LINE1 + 1) ;
rcall LCD_SetAddressDD ; Set Display Data address to (1,1); rcall LCD_SetAddressDD ; Set Display Data address to (1,1);
;ldi ZL, LOW(Text2 << 1) ;
;ldi ZH, HIGH(Text2<< 1) ; Load string address to Z
;rcall LCD_WriteString ; Display string
ConfigResolTo10Bits: ConfigResolTo10Bits:
rcall OWReset rcall OWReset
brts ConfigResolTo10Bits brts ConfigResolTo10Bits
@ -83,7 +80,7 @@ ConfigResolTo10Bits:
MainLoop: MainLoop:
ldi r16, (HD44780_LINE1 + 1) ; ldi r16, (HD44780_LINE1 + 1) ;
rcall LCD_SetAddressDD ; Set Display Data address to (1,1); rcall LCD_SetAddressDD ; Set Display Data address to (1,1);
rcall OWReset ; One wire reset rcall OWReset ; One wire reset
brts MainLoop ; If device not present go to MainLoop brts MainLoop ; If device not present go to MainLoop
@ -91,81 +88,20 @@ ldi r16, (HD44780_LINE1 + 1) ;
rcall TempRequest rcall TempRequest
rcall MainReadTemp rcall MainReadTemp
rcall ConvertTempForLCD rcall ConvertTempForLCD
nop
nop
nop
;jmp PC-1;LoadLoop
;rcall CRC8Init ; Initialize CRC8 value
jmp LoadLoop
rcall OWReadByte ; Read first byte (Family ID)
cpi r16,0 ; If first byte equal to zero, go to MainLoop
breq MainLoop ; (short circuit on one wire bus)
rcall CRC8Update ; Update the CRC
ldi YL, LOW(SerialNumber) ;
ldi YH, HIGH(SerialNumber) ; Load to Y address of SerialNumber table
st Y+, r16 ; Store first byte to table, and increment pointer
ldi r17, 7 ; 7 bytes remaining
StoreLoop:
rcall OWReadByte ; read next byte
rcall CRC8Update ; update the CRC
st Y+, r16 ; store next byte to table, and increment pointer
dec r17 ; decrement loop counter
brne StoreLoop ; if greater than zero, jump to StoreLoop
rcall GetCRC8 ; Read computet CRC8
cpi r16,0 ; copmare with zero
brne MainLoop ; if not equal, jump to MainLoop (bad CRC)
; else
ldi r16, (HD44780_LINE1 + 0) ;
rcall LCD_SetAddressDD ; Set DisplayData address to (0,1)
ldi YL, LOW(SerialNumber) ;
ldi YH, HIGH(SerialNumber) ; Load to Y address of SerialNumber table
ldi r17,2 ; 8 digits to display
LoadLoop: LoadLoop:
push r16 push r16
mov r16, XL ; load to r16 byte from table mov r16, XL ; chargement partie entière
push r16
ldi r19,0xF0
and r16,r19
rcall bin2bcd8
lsr r16
lsr r16
lsr r16
lsr r16
rcall LCD_WriteHexDigit ; display it on LCD in HEX
pop r16
rcall bin2bcd8 rcall bin2bcd8
ldi r18,0x0F rcall LCD_WriteHex8 ; display it on LCD in HEX
and r16,r18 mov r16, r18 ; load DEC
rcall LCD_WriteHexDigit ; display it on LCD in HEX
mov r16, r18 ; load to r16 byte from table
push r16
ldi r19,0xF0
and r16,r19
rcall bin2bcd8 rcall bin2bcd8
lsr r16 rcall LCD_WriteHex8 ; display it on LCD in HEX
lsr r16
lsr r16
lsr r16
rcall LCD_WriteHexDigit ; display it on LCD in HEX
pop r16
rcall bin2bcd8
ldi r18,0x0F
and r16,r18
rcall LCD_WriteHexDigit ; display it on LCD in HEX
nop
nop
nop
jmp MainLoop jmp MainLoop
brne LoadLoop ; if not zero, jump to LoadLoop brne LoadLoop ; if not zero, jump to LoadLoop
rjmp MainLoop ; jump to MainLoop rjmp MainLoop ; jump to MainLoop
@ -186,6 +122,7 @@ LoadLoop:
;.def tBCD = r21 ;add this to main asm file ;.def tBCD = r21 ;add this to main asm file
; ;
bin2bcd8: bin2bcd8:
push r21
clr r21 ;clear temp reg clr r21 ;clear temp reg
bBCD8_1: bBCD8_1:
subi r16,10 ;input = input - 10 subi r16,10 ;input = input - 10
@ -195,4 +132,5 @@ bBCD8_1:
bBCD8_2: bBCD8_2:
subi r16,-10 ;compensate extra subtraction subi r16,-10 ;compensate extra subtraction
add r16,r21 add r16,r21
pop r21
ret ret