commit avent dodo
This commit is contained in:
113
ibutton-numberSample/1-wire.asm
Normal file
113
ibutton-numberSample/1-wire.asm
Normal file
@@ -0,0 +1,113 @@
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
.equ OW_PORT = PORTD
|
||||
.equ OW_PIN = PIND
|
||||
.equ OW_DDR = DDRD
|
||||
.equ OW_DQ = PD6
|
||||
|
||||
.def OWCount = r17
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
.cseg
|
||||
;------------------------------------------------------------------------------
|
||||
; Output : T - presence bit
|
||||
;------------------------------------------------------------------------------
|
||||
OWReset:
|
||||
cbi OW_PORT,OW_DQ
|
||||
sbi OW_DDR,OW_DQ
|
||||
|
||||
ldi XH, HIGH(DVUS(470))
|
||||
ldi XL, LOW(DVUS(470))
|
||||
rcall Wait4xCycles
|
||||
|
||||
cbi OW_DDR,OW_DQ
|
||||
|
||||
ldi XH, HIGH(DVUS(70))
|
||||
ldi XL, LOW(DVUS(70))
|
||||
rcall Wait4xCycles
|
||||
|
||||
set
|
||||
sbis OW_PIN,OW_DQ
|
||||
clt
|
||||
|
||||
ldi XH, HIGH(DVUS(240))
|
||||
ldi XL, LOW(DVUS(240))
|
||||
rcall Wait4xCycles
|
||||
|
||||
ret
|
||||
;------------------------------------------------------------------------------
|
||||
; Input : C - bit to write
|
||||
;------------------------------------------------------------------------------
|
||||
OWWriteBit:
|
||||
brcc OWWriteZero
|
||||
ldi XH, HIGH(DVUS(1))
|
||||
ldi XL, LOW(DVUS(1))
|
||||
rjmp OWWriteOne
|
||||
OWWriteZero:
|
||||
ldi XH, HIGH(DVUS(120))
|
||||
ldi XL, LOW(DVUS(120))
|
||||
OWWriteOne:
|
||||
sbi OW_DDR, OW_DQ
|
||||
rcall Wait4xCycles
|
||||
cbi OW_DDR, OW_DQ
|
||||
|
||||
ldi XH, HIGH(DVUS(60))
|
||||
ldi XL, LOW(DVUS(60))
|
||||
rcall Wait4xCycles
|
||||
ret
|
||||
;------------------------------------------------------------------------------
|
||||
; Input : r16 - byte to write
|
||||
;------------------------------------------------------------------------------
|
||||
OWWriteByte:
|
||||
push OWCount
|
||||
ldi OWCount,0
|
||||
OWWriteLoop:
|
||||
ror r16
|
||||
rcall OWWriteBit
|
||||
inc OWCount
|
||||
cpi OWCount,8
|
||||
brne OWWriteLoop
|
||||
pop OWCount
|
||||
ret
|
||||
;------------------------------------------------------------------------------
|
||||
; Output : C - bit from slave
|
||||
;------------------------------------------------------------------------------
|
||||
OWReadBit:
|
||||
ldi XH, HIGH(DVUS(1))
|
||||
ldi XL, LOW(DVUS(1))
|
||||
sbi OW_DDR, OW_DQ
|
||||
rcall Wait4xCycles
|
||||
cbi OW_DDR, OW_DQ
|
||||
ldi XH, HIGH(DVUS(5))
|
||||
ldi XL, LOW(DVUS(5))
|
||||
rcall Wait4xCycles
|
||||
clt
|
||||
sbic OW_PIN,OW_DQ
|
||||
set
|
||||
ldi XH, HIGH(DVUS(50))
|
||||
ldi XL, LOW(DVUS(50))
|
||||
rcall Wait4xCycles
|
||||
sec
|
||||
brts OWReadBitEnd
|
||||
clc
|
||||
OWReadBitEnd:
|
||||
ret
|
||||
;------------------------------------------------------------------------------
|
||||
; Output : r16 - byte from slave
|
||||
;------------------------------------------------------------------------------
|
||||
OWReadByte:
|
||||
push OWCount
|
||||
ldi OWCount,0
|
||||
OWReadLoop:
|
||||
rcall OWReadBit
|
||||
ror r16
|
||||
inc OWCount
|
||||
cpi OWCount,8
|
||||
brne OWReadLoop
|
||||
pop OWCount
|
||||
ret
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
2
ibutton-numberSample/AvrBuild.bat
Normal file
2
ibutton-numberSample/AvrBuild.bat
Normal file
@@ -0,0 +1,2 @@
|
||||
@ECHO OFF
|
||||
"C:\Program Files (x86)\Atmel\AVR Tools\AvrAssembler2\avrasm2.exe" -S "F:\WORK\uK\AVR\Projects\ibutton-number-read\labels.tmp" -fI -W+ie -o "F:\WORK\uK\AVR\Projects\ibutton-number-read\ibutton-number-read.hex" -d "F:\WORK\uK\AVR\Projects\ibutton-number-read\ibutton-number-read.obj" -e "F:\WORK\uK\AVR\Projects\ibutton-number-read\ibutton-number-read.eep" -m "F:\WORK\uK\AVR\Projects\ibutton-number-read\ibutton-number-read.map" "F:\WORK\uK\AVR\Projects\ibutton-number-read\main.asm"
|
||||
67
ibutton-numberSample/crc8.asm
Normal file
67
ibutton-numberSample/crc8.asm
Normal file
@@ -0,0 +1,67 @@
|
||||
;------------------------------------------------------------------------------
|
||||
; CRC8 computing functions
|
||||
; based on Application Note 27 from Dallas Semiconductor
|
||||
; http://avr-mcu.dxp.pl
|
||||
; e-mail: radek@dxp.pl
|
||||
; (c) Radoslaw Kwiecien
|
||||
;------------------------------------------------------------------------------
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; Data segment
|
||||
;------------------------------------------------------------------------------
|
||||
.dseg
|
||||
_crc : .byte 1
|
||||
;------------------------------------------------------------------------------
|
||||
; Code segment
|
||||
;------------------------------------------------------------------------------
|
||||
.cseg
|
||||
;------------------------------------------------------------------------------
|
||||
; Update crc value
|
||||
;------------------------------------------------------------------------------
|
||||
CRC8Update:
|
||||
push r16
|
||||
push r17
|
||||
push r18
|
||||
push r16
|
||||
|
||||
ldi r17, 8
|
||||
CRC8L:
|
||||
lds r18, _crc
|
||||
eor r16, r18
|
||||
ror r16
|
||||
lds r16, _crc
|
||||
brcc CRC8zero
|
||||
ldi r18, 0x18
|
||||
eor r16, r18
|
||||
|
||||
CRC8zero:
|
||||
ror r16
|
||||
sts _crc, r16
|
||||
pop r16
|
||||
lsr r16
|
||||
push r16
|
||||
dec r17
|
||||
brne CRC8L
|
||||
pop r16
|
||||
pop r18
|
||||
pop r17
|
||||
pop r16
|
||||
ret
|
||||
;------------------------------------------------------------------------------
|
||||
; Clear crc value
|
||||
;------------------------------------------------------------------------------
|
||||
CRC8Init:
|
||||
push r16
|
||||
ldi r16,0
|
||||
sts _crc, r16
|
||||
pop r16
|
||||
ret
|
||||
;------------------------------------------------------------------------------
|
||||
; Copy crc value to r16
|
||||
;------------------------------------------------------------------------------
|
||||
GetCRC8:
|
||||
lds r16, _crc
|
||||
ret
|
||||
;------------------------------------------------------------------------------
|
||||
; End of crc8.asm file
|
||||
;------------------------------------------------------------------------------
|
||||
29
ibutton-numberSample/div8u.asm
Normal file
29
ibutton-numberSample/div8u.asm
Normal file
@@ -0,0 +1,29 @@
|
||||
.cseg
|
||||
;***** Subroutine Register Variables
|
||||
|
||||
.def drem8u =r15 ;remainder
|
||||
.def dres8u =r16 ;result
|
||||
.def dd8u =r16 ;dividend
|
||||
.def dv8u =r17 ;divisor
|
||||
.def dcnt8u =r18 ;loop counter
|
||||
|
||||
;***** Code
|
||||
|
||||
div8u:
|
||||
sub drem8u,drem8u ; clear remainder and carry
|
||||
ldi dcnt8u,9 ; init loop counter
|
||||
d8u_1:
|
||||
rol dd8u ; shift left dividend
|
||||
dec dcnt8u ; decrement counter
|
||||
brne d8u_2 ; if done
|
||||
ret ; return
|
||||
d8u_2:
|
||||
rol drem8u ; shift dividend into remainder
|
||||
sub drem8u,dv8u ; remainder = remainder - divisor
|
||||
brcc d8u_3 ; if result negative
|
||||
add drem8u,dv8u ; restore remainder
|
||||
clc ; clear carry to be shifted into result
|
||||
rjmp d8u_1 ; else
|
||||
d8u_3:
|
||||
sec ; set carry to be shifted into result
|
||||
rjmp d8u_1
|
||||
216
ibutton-numberSample/hd44780.asm
Normal file
216
ibutton-numberSample/hd44780.asm
Normal file
@@ -0,0 +1,216 @@
|
||||
;------------------------------------------------------------------------------
|
||||
; HD44780 LCD Assembly driver
|
||||
; http://avr-mcu.dxp.pl
|
||||
; e-mail : radek@dxp.pl
|
||||
; (c) Radoslaw Kwiecien
|
||||
;------------------------------------------------------------------------------
|
||||
.include "tn2313def.inc"
|
||||
.include "hd44780.inc"
|
||||
|
||||
.equ LCD_PORT = PORTB
|
||||
.equ LCD_DDR = DDRB
|
||||
.equ LCD_PIN = PINB
|
||||
|
||||
.equ LCD_D4 = 0
|
||||
.equ LCD_D5 = 1
|
||||
.equ LCD_D6 = 2
|
||||
.equ LCD_D7 = 3
|
||||
|
||||
.equ LCD_RS = 4
|
||||
.equ LCD_EN = 6
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; Data segment
|
||||
;------------------------------------------------------------------------------
|
||||
.dseg
|
||||
;------------------------------------------------------------------------------
|
||||
; Code segment
|
||||
;------------------------------------------------------------------------------
|
||||
.cseg
|
||||
#include "div8u.asm"
|
||||
;------------------------------------------------------------------------------
|
||||
; Write half byte to LCD
|
||||
;------------------------------------------------------------------------------
|
||||
LCD_WriteNibble:
|
||||
sbi LCD_PORT, LCD_EN
|
||||
|
||||
sbrs r16, 0
|
||||
cbi LCD_PORT, LCD_D4
|
||||
sbrc r16, 0
|
||||
sbi LCD_PORT, LCD_D4
|
||||
|
||||
sbrs r16, 1
|
||||
cbi LCD_PORT, LCD_D5
|
||||
sbrc r16, 1
|
||||
sbi LCD_PORT, LCD_D5
|
||||
|
||||
sbrs r16, 2
|
||||
cbi LCD_PORT, LCD_D6
|
||||
sbrc r16, 2
|
||||
sbi LCD_PORT, LCD_D6
|
||||
|
||||
sbrs r16, 3
|
||||
cbi LCD_PORT, LCD_D7
|
||||
sbrc r16, 3
|
||||
sbi LCD_PORT, LCD_D7
|
||||
|
||||
cbi LCD_PORT, LCD_EN
|
||||
ret
|
||||
;------------------------------------------------------------------------------
|
||||
; Write data byte to LCD
|
||||
;------------------------------------------------------------------------------
|
||||
LCD_WriteData:
|
||||
sbi LCD_PORT, LCD_RS
|
||||
push r16
|
||||
swap r16
|
||||
rcall LCD_WriteNibble
|
||||
pop r16
|
||||
rcall LCD_WriteNibble
|
||||
|
||||
clr XH
|
||||
ldi XL,250
|
||||
rcall Wait4xCycles
|
||||
ret
|
||||
;------------------------------------------------------------------------------
|
||||
; Write command byte to LCD
|
||||
;------------------------------------------------------------------------------
|
||||
LCD_WriteCommand:
|
||||
cbi LCD_PORT, LCD_RS
|
||||
push r16
|
||||
swap r16
|
||||
rcall LCD_WriteNibble
|
||||
pop r16
|
||||
rcall LCD_WriteNibble
|
||||
ldi r16,2
|
||||
rcall WaitMiliseconds
|
||||
ret
|
||||
;------------------------------------------------------------------------------
|
||||
; Write string (from program memory)
|
||||
;------------------------------------------------------------------------------
|
||||
LCD_WriteString:
|
||||
lpm r16, Z+
|
||||
cpi r16, 0
|
||||
breq exit
|
||||
rcall LCD_WriteData
|
||||
rjmp LCD_WriteString
|
||||
exit:
|
||||
ret
|
||||
;------------------------------------------------------------------------------
|
||||
; Display one digit in HEX code
|
||||
;------------------------------------------------------------------------------
|
||||
LCD_WriteHexDigit:
|
||||
cpi r16,10
|
||||
brlo Num
|
||||
ldi r17,'7'
|
||||
add r16,r17
|
||||
rcall LCD_WriteData
|
||||
ret
|
||||
Num:
|
||||
ldi r17,'0'
|
||||
add r16,r17
|
||||
rcall LCD_WriteData
|
||||
ret
|
||||
;------------------------------------------------------------------------------
|
||||
; Display 8-byte hex value of r16
|
||||
;------------------------------------------------------------------------------
|
||||
LCD_WriteHex8:
|
||||
push r17
|
||||
push r16
|
||||
swap r16
|
||||
andi r16,0x0F
|
||||
rcall LCD_WriteHexDigit
|
||||
|
||||
pop r16
|
||||
andi r16,0x0F
|
||||
rcall LCD_WriteHexDigit
|
||||
pop r17
|
||||
ret
|
||||
;------------------------------------------------------------------------------
|
||||
; Display decimal value of r16
|
||||
;------------------------------------------------------------------------------
|
||||
LCD_WriteDecimal:
|
||||
clr r14
|
||||
LCD_WriteDecimalLoop:
|
||||
ldi r17,10
|
||||
rcall div8u
|
||||
inc r14
|
||||
push r15
|
||||
cpi r16,0
|
||||
brne LCD_WriteDecimalLoop
|
||||
|
||||
LCD_WriteDecimalLoop2:
|
||||
ldi r17,'0'
|
||||
pop r16
|
||||
add r16,r17
|
||||
rcall LCD_WriteData
|
||||
dec r14
|
||||
brne LCD_WriteDecimalLoop2
|
||||
ret
|
||||
;------------------------------------------------------------------------------
|
||||
; Set address in Display Data RAM
|
||||
;------------------------------------------------------------------------------
|
||||
LCD_SetAddressDD:
|
||||
ori r16, HD44780_DDRAM_SET
|
||||
rcall LCD_WriteCommand
|
||||
ret
|
||||
;------------------------------------------------------------------------------
|
||||
; Set address in Character Generator RAM
|
||||
;------------------------------------------------------------------------------
|
||||
LCD_SetAddressCG:
|
||||
ori r16, HD44780_CGRAM_SET
|
||||
rcall LCD_WriteCommand
|
||||
ret
|
||||
;------------------------------------------------------------------------------
|
||||
; Initialization of LCD
|
||||
;------------------------------------------------------------------------------
|
||||
LCD_Init:
|
||||
sbi LCD_DDR, LCD_D4
|
||||
sbi LCD_DDR, LCD_D5
|
||||
sbi LCD_DDR, LCD_D6
|
||||
sbi LCD_DDR, LCD_D7
|
||||
|
||||
sbi LCD_DDR, LCD_RS
|
||||
sbi LCD_DDR, LCD_EN
|
||||
|
||||
cbi LCD_PORT, LCD_RS
|
||||
cbi LCD_PORT, LCD_EN
|
||||
|
||||
ldi r16, 100
|
||||
rcall WaitMiliseconds
|
||||
|
||||
ldi r17, 3
|
||||
InitLoop:
|
||||
ldi r16, 0x03
|
||||
rcall LCD_WriteNibble
|
||||
ldi r16, 5
|
||||
rcall WaitMiliseconds
|
||||
dec r17
|
||||
brne InitLoop
|
||||
|
||||
ldi r16, 0x02
|
||||
rcall LCD_WriteNibble
|
||||
|
||||
ldi r16, 1
|
||||
rcall WaitMiliseconds
|
||||
|
||||
ldi r16, HD44780_FUNCTION_SET | HD44780_FONT5x7 | HD44780_TWO_LINE | HD44780_4_BIT
|
||||
rcall LCD_WriteCommand
|
||||
|
||||
ldi r16, HD44780_DISPLAY_ONOFF | HD44780_DISPLAY_OFF
|
||||
rcall LCD_WriteCommand
|
||||
|
||||
ldi r16, HD44780_CLEAR
|
||||
rcall LCD_WriteCommand
|
||||
|
||||
ldi r16, HD44780_ENTRY_MODE |HD44780_EM_SHIFT_CURSOR | HD44780_EM_INCREMENT
|
||||
rcall LCD_WriteCommand
|
||||
|
||||
ldi r16, HD44780_DISPLAY_ONOFF | HD44780_DISPLAY_ON | HD44780_CURSOR_OFF | HD44780_CURSOR_NOBLINK
|
||||
rcall LCD_WriteCommand
|
||||
|
||||
ret
|
||||
;------------------------------------------------------------------------------
|
||||
; End of file
|
||||
;------------------------------------------------------------------------------
|
||||
|
||||
|
||||
38
ibutton-numberSample/hd44780.inc
Normal file
38
ibutton-numberSample/hd44780.inc
Normal file
@@ -0,0 +1,38 @@
|
||||
#define HD44780_CLEAR 0x01
|
||||
|
||||
#define HD44780_HOME 0x02
|
||||
|
||||
#define HD44780_ENTRY_MODE 0x04
|
||||
#define HD44780_EM_SHIFT_CURSOR 0
|
||||
#define HD44780_EM_SHIFT_DISPLAY 1
|
||||
#define HD44780_EM_DECREMENT 0
|
||||
#define HD44780_EM_INCREMENT 2
|
||||
|
||||
#define HD44780_DISPLAY_ONOFF 0x08
|
||||
#define HD44780_DISPLAY_OFF 0
|
||||
#define HD44780_DISPLAY_ON 4
|
||||
#define HD44780_CURSOR_OFF 0
|
||||
#define HD44780_CURSOR_ON 2
|
||||
#define HD44780_CURSOR_NOBLINK 0
|
||||
#define HD44780_CURSOR_BLINK 1
|
||||
|
||||
#define HD44780_DISPLAY_CURSOR_SHIFT 0x10
|
||||
#define HD44780_SHIFT_CURSOR 0
|
||||
#define HD44780_SHIFT_DISPLAY 8
|
||||
#define HD44780_SHIFT_LEFT 0
|
||||
#define HD44780_SHIFT_RIGHT 4
|
||||
|
||||
#define HD44780_FUNCTION_SET 0x20
|
||||
#define HD44780_FONT5x7 0
|
||||
#define HD44780_FONT5x10 4
|
||||
#define HD44780_ONE_LINE 0
|
||||
#define HD44780_TWO_LINE 8
|
||||
#define HD44780_4_BIT 0
|
||||
#define HD44780_8_BIT 16
|
||||
|
||||
#define HD44780_CGRAM_SET 0x40
|
||||
|
||||
#define HD44780_DDRAM_SET 0x80
|
||||
|
||||
#define HD44780_LINE0 0x00
|
||||
#define HD44780_LINE1 0x40
|
||||
1
ibutton-numberSample/ibutton-number-read.aps
Normal file
1
ibutton-numberSample/ibutton-number-read.aps
Normal file
@@ -0,0 +1 @@
|
||||
<AVRStudio><MANAGEMENT><ProjectName>ibutton-number-read</ProjectName><Created>04-Dec-2011 17:57:47</Created><LastEdit>06-Dec-2011 17:56:07</LastEdit><ICON>208</ICON><ProjectType>0</ProjectType><Created>04-Dec-2011 17:57:47</Created><Version>4</Version><Build>4, 15, 0, 623</Build><ProjectTypeName>Atmel AVR Assembler</ProjectTypeName></MANAGEMENT><CODE_CREATION><ObjectFile>ibutton-number-read.obj</ObjectFile><EntryFile>F:\WORK\uK\AVR\Projects\ibutton-number-read\main.asm</EntryFile><SaveFolder>F:\WORK\uK\AVR\Projects\ibutton-number-read\</SaveFolder></CODE_CREATION><DEBUG_TARGET><CURRENT_TARGET>AVR Simulator</CURRENT_TARGET><CURRENT_PART>ATtiny2313.xml</CURRENT_PART><BREAKPOINTS></BREAKPOINTS><IO_EXPAND><HIDE>false</HIDE></IO_EXPAND><REGISTERNAMES><Register>R00</Register><Register>R01</Register><Register>R02</Register><Register>R03</Register><Register>R04</Register><Register>R05</Register><Register>R06</Register><Register>R07</Register><Register>R08</Register><Register>R09</Register><Register>R10</Register><Register>R11</Register><Register>R12</Register><Register>R13</Register><Register>R14</Register><Register>R15</Register><Register>R16</Register><Register>R17</Register><Register>R18</Register><Register>R19</Register><Register>R20</Register><Register>R21</Register><Register>R22</Register><Register>R23</Register><Register>R24</Register><Register>R25</Register><Register>R26</Register><Register>R27</Register><Register>R28</Register><Register>R29</Register><Register>R30</Register><Register>R31</Register></REGISTERNAMES><COM>Auto</COM><COMType>0</COMType><WATCHNUM>0</WATCHNUM><WATCHNAMES><Pane0></Pane0><Pane1></Pane1><Pane2></Pane2><Pane3></Pane3></WATCHNAMES><BreakOnTrcaeFull>0</BreakOnTrcaeFull></DEBUG_TARGET><Debugger><Triggers></Triggers></Debugger><AvrAssembler><Folder>F:\WORK\uK\AVR\Projects\ibutton-number-read\</Folder><RelPath>main.asm</RelPath><EntryFile>F:\WORK\uK\AVR\Projects\ibutton-number-read\main.asm</EntryFile><IncludePath>C:\Program Files (x86)\Atmel\AVR Tools\AvrAssembler\Appnotes</IncludePath><V2IncludePath></V2IncludePath><V2Parameters></V2Parameters><FileType>I</FileType><ObjectName>ibutton-number-read</ObjectName><Wrap>0</Wrap><ErrorAsWarning>0</ErrorAsWarning><MapFile>1</MapFile><ListFile>0</ListFile><Version1>0</Version1><PreCompile></PreCompile><PostCompile></PostCompile><SourceFiles>,</SourceFiles></AvrAssembler><ProjectIncludeDirs><Dirs><Dir>C:\Program Files (x86)\Atmel\AVR Tools\AvrAssembler2\Appnotes</Dir></Dirs></ProjectIncludeDirs><ProjectFiles><Files><Name>\main.asm</Name></Files></ProjectFiles><IOView><usergroups/><sort sorted="0" column="0" ordername="0" orderaddress="0" ordergroup="0"/></IOView><Files><File00000><FileId>00000</FileId><FileName>main.asm</FileName><Status>1</Status></File00000><File00001><FileId>00001</FileId><FileName>hd44780.inc</FileName><Status>1</Status></File00001><File00002><FileId>00002</FileId><FileName>crc8.asm</FileName><Status>1</Status></File00002></Files><Events><Bookmarks></Bookmarks></Events><Trace><Filters></Filters></Trace></AVRStudio>
|
||||
1
ibutton-numberSample/ibutton-number-read.aws
Normal file
1
ibutton-numberSample/ibutton-number-read.aws
Normal file
@@ -0,0 +1 @@
|
||||
<AVRWorkspace><IOSettings><CurrentRegisters/></IOSettings><part name="ATTINY2313"/><Files><File00000 Name="F:\WORK\uK\AVR\Projects\ibutton-number-read\main.asm" Position="-31738 -31948 -30432 -31215" LineCol="144 20" State="Maximized"/><File00001 Name="F:\WORK\uK\AVR\Projects\ibutton-number-read\hd44780.inc" Position="-31646 -31837 -30568 -31351" LineCol="37 8" State="Maximized"/><File00002 Name="F:\WORK\uK\AVR\Projects\ibutton-number-read\crc8.asm" Position="-31580 -31771 -30502 -31285" LineCol="39 9" State="Maximized"/></Files></AVRWorkspace>
|
||||
43
ibutton-numberSample/ibutton-number-read.hex
Normal file
43
ibutton-numberSample/ibutton-number-read.hex
Normal file
@@ -0,0 +1,43 @@
|
||||
:020000020000FC
|
||||
:1000000017C118951895189518951895189518955D
|
||||
:100010001895189518951895189518951895189578
|
||||
:10002000189518951895FF1829E0001F2A9509F4CE
|
||||
:100030000895FF1CF11A18F4F10E8894F6CF089475
|
||||
:10004000F4CFC69A00FFC09800FDC09A01FFC19886
|
||||
:1000500001FDC19A02FFC29802FDC29A03FFC39834
|
||||
:1000600003FDC39AC6980895C49A0F930295E9DFD9
|
||||
:100070000F91E7DFBB27AAEF58D00895C4980F93DC
|
||||
:100080000295DFDF0F91DDDF02E052D00895059188
|
||||
:10009000003011F0E9DFFBCF08950A3020F017E3BC
|
||||
:1000A000010FE2DF089510E3010FDEDF08951F93D3
|
||||
:1000B0000F9302950F70F1DF0F910F70EEDF1F911C
|
||||
:1000C0000895EE241AE0AFDFE394FF920030D1F7F9
|
||||
:1000D00010E30F91010FC8DFEA94D1F7089500688B
|
||||
:1000E000CDDF08950064CADF0895B89AB99ABA9A24
|
||||
:1000F000BB9ABC9ABE9AC498C69804E619D013E07D
|
||||
:1001000003E09FDF05E014D01A95D1F702E099DFF4
|
||||
:1001100001E00ED008E2B2DF08E0B0DF01E0AEDFC0
|
||||
:1001200006E0ACDF0CE0AADF08951197F1F708951F
|
||||
:100130000F93B3E0A8EEF9DFB3E0A8EEF6DF0A957F
|
||||
:10014000C1F70F91089596988E9AB3E0ACEAEDDF6F
|
||||
:100150008E98B0E0ACE8E9DF6894869BE894B1E063
|
||||
:10016000A0EEE3DF089518F4B0E0A2E002C0B0E032
|
||||
:10017000A0EF8E9ADADF8E98B0E0A8E7D6DF089578
|
||||
:100180001F9310E00795EFDF13951830D9F71F91F3
|
||||
:100190000895B0E0A2E08E9AC8DF8E98B0E0AAE0A1
|
||||
:1001A000C4DFE89486996894B0E0A4E6BEDF0894C2
|
||||
:1001B0000EF0889408951F9310E0EBDF07951395D8
|
||||
:1001C0001830D9F71F9108950F931F932F930F9312
|
||||
:1001D00018E020916800022707950091680010F44C
|
||||
:1001E00028E102270795009368000F9106950F9369
|
||||
:1001F0001A9579F70F912F911F910F9108950F93F1
|
||||
:1002000000E0009368000F91089500916800089540
|
||||
:1002100069427574746F6E20526561646572000086
|
||||
:100220006176722D6D63752E6478702E706C00008F
|
||||
:100230000FED0DBF5ADF01E052DFE0E1F2E027DF12
|
||||
:1002400001E44DDFE0E2F2E022DF7DDFF6F303E3DD
|
||||
:1002500097DFD5DFB0DF0030C1F3B6DFC0E6D0E016
|
||||
:10026000099317E0A8DFB0DF09931A95D9F7CDDF1E
|
||||
:10027000003059F700E433DFC0E6D0E018E0099120
|
||||
:0802800016DF1A95E1F7E1CF4A
|
||||
:00000001FF
|
||||
522
ibutton-numberSample/ibutton-number-read.map
Normal file
522
ibutton-numberSample/ibutton-number-read.map
Normal file
@@ -0,0 +1,522 @@
|
||||
|
||||
AVRASM ver. 2.1.30 F:\WORK\uK\AVR\Projects\ibutton-number-read\main.asm Tue Dec 06 21:13:19 2011
|
||||
|
||||
|
||||
EQU SIGNATURE_000 0000001e
|
||||
EQU SIGNATURE_001 00000091
|
||||
EQU SIGNATURE_002 0000000a
|
||||
EQU SREG 0000003f
|
||||
EQU SPL 0000003d
|
||||
EQU OCR0B 0000003c
|
||||
EQU GIMSK 0000003b
|
||||
EQU EIFR 0000003a
|
||||
EQU TIMSK 00000039
|
||||
EQU TIFR 00000038
|
||||
EQU SPMCSR 00000037
|
||||
EQU OCR0A 00000036
|
||||
EQU MCUCR 00000035
|
||||
EQU MCUSR 00000034
|
||||
EQU TCCR0B 00000033
|
||||
EQU TCNT0 00000032
|
||||
EQU OSCCAL 00000031
|
||||
EQU TCCR0A 00000030
|
||||
EQU TCCR1A 0000002f
|
||||
EQU TCCR1B 0000002e
|
||||
EQU TCNT1L 0000002c
|
||||
EQU TCNT1H 0000002d
|
||||
EQU OCR1AL 0000002a
|
||||
EQU OCR1AH 0000002b
|
||||
EQU OCR1BL 00000028
|
||||
EQU OCR1BH 00000029
|
||||
EQU CLKPR 00000026
|
||||
EQU ICR1L 00000024
|
||||
EQU ICR1H 00000025
|
||||
EQU GTCCR 00000023
|
||||
EQU TCCR1C 00000022
|
||||
EQU WDTCR 00000021
|
||||
EQU PCMSK 00000020
|
||||
EQU EEAR 0000001e
|
||||
EQU EEDR 0000001d
|
||||
EQU EECR 0000001c
|
||||
EQU PORTA 0000001b
|
||||
EQU DDRA 0000001a
|
||||
EQU PINA 00000019
|
||||
EQU PORTB 00000018
|
||||
EQU DDRB 00000017
|
||||
EQU PINB 00000016
|
||||
EQU GPIOR2 00000015
|
||||
EQU GPIOR1 00000014
|
||||
EQU GPIOR0 00000013
|
||||
EQU PORTD 00000012
|
||||
EQU DDRD 00000011
|
||||
EQU PIND 00000010
|
||||
EQU USIDR 0000000f
|
||||
EQU USISR 0000000e
|
||||
EQU USICR 0000000d
|
||||
EQU UDR 0000000c
|
||||
EQU UCSRA 0000000b
|
||||
EQU UCSRB 0000000a
|
||||
EQU UBRRL 00000009
|
||||
EQU ACSR 00000008
|
||||
EQU UCSRC 00000003
|
||||
EQU UBRRH 00000002
|
||||
EQU DIDR 00000001
|
||||
EQU PORTB0 00000000
|
||||
EQU PB0 00000000
|
||||
EQU PORTB1 00000001
|
||||
EQU PB1 00000001
|
||||
EQU PORTB2 00000002
|
||||
EQU PB2 00000002
|
||||
EQU PORTB3 00000003
|
||||
EQU PB3 00000003
|
||||
EQU PORTB4 00000004
|
||||
EQU PB4 00000004
|
||||
EQU PORTB5 00000005
|
||||
EQU PB5 00000005
|
||||
EQU PORTB6 00000006
|
||||
EQU PB6 00000006
|
||||
EQU PORTB7 00000007
|
||||
EQU PB7 00000007
|
||||
EQU DDB0 00000000
|
||||
EQU DDB1 00000001
|
||||
EQU DDB2 00000002
|
||||
EQU DDB3 00000003
|
||||
EQU DDB4 00000004
|
||||
EQU DDB5 00000005
|
||||
EQU DDB6 00000006
|
||||
EQU DDB7 00000007
|
||||
EQU PINB0 00000000
|
||||
EQU PINB1 00000001
|
||||
EQU PINB2 00000002
|
||||
EQU PINB3 00000003
|
||||
EQU PINB4 00000004
|
||||
EQU PINB5 00000005
|
||||
EQU PINB6 00000006
|
||||
EQU PINB7 00000007
|
||||
EQU OCIE0A 00000000
|
||||
EQU TOIE0 00000001
|
||||
EQU OCIE0B 00000002
|
||||
EQU OCF0A 00000000
|
||||
EQU TOV0 00000001
|
||||
EQU OCF0B 00000002
|
||||
EQU OCR0_0 00000000
|
||||
EQU OCR0_1 00000001
|
||||
EQU OCR0_2 00000002
|
||||
EQU OCR0_3 00000003
|
||||
EQU OCR0_4 00000004
|
||||
EQU OCR0_5 00000005
|
||||
EQU OCR0_6 00000006
|
||||
EQU OCR0_7 00000007
|
||||
EQU WGM00 00000000
|
||||
EQU WGM01 00000001
|
||||
EQU COM0B0 00000004
|
||||
EQU COM0B1 00000005
|
||||
EQU COM0A0 00000006
|
||||
EQU COM0A1 00000007
|
||||
EQU TCNT0_0 00000000
|
||||
EQU TCNT0_1 00000001
|
||||
EQU TCNT0_2 00000002
|
||||
EQU TCNT0_3 00000003
|
||||
EQU TCNT0_4 00000004
|
||||
EQU TCNT0_5 00000005
|
||||
EQU TCNT0_6 00000006
|
||||
EQU TCNT0_7 00000007
|
||||
EQU TCCR0 00000033
|
||||
EQU CS00 00000000
|
||||
EQU CS01 00000001
|
||||
EQU CS02 00000002
|
||||
EQU WGM02 00000003
|
||||
EQU FOC0B 00000006
|
||||
EQU FOC0A 00000007
|
||||
EQU ICIE1 00000003
|
||||
EQU TICIE 00000003
|
||||
EQU OCIE1B 00000005
|
||||
EQU OCIE1A 00000006
|
||||
EQU TOIE1 00000007
|
||||
EQU ICF1 00000003
|
||||
EQU OCF1B 00000005
|
||||
EQU OCF1A 00000006
|
||||
EQU TOV1 00000007
|
||||
EQU WGM10 00000000
|
||||
EQU PWM10 00000000
|
||||
EQU WGM11 00000001
|
||||
EQU PWM11 00000001
|
||||
EQU COM1B0 00000004
|
||||
EQU COM1B1 00000005
|
||||
EQU COM1A0 00000006
|
||||
EQU COM1A1 00000007
|
||||
EQU CS10 00000000
|
||||
EQU CS11 00000001
|
||||
EQU CS12 00000002
|
||||
EQU WGM12 00000003
|
||||
EQU CTC1 00000003
|
||||
EQU WGM13 00000004
|
||||
EQU ICES1 00000006
|
||||
EQU ICNC1 00000007
|
||||
EQU FOC1B 00000006
|
||||
EQU FOC1A 00000007
|
||||
EQU OCR1AH0 00000000
|
||||
EQU OCR1AH1 00000001
|
||||
EQU OCR1AH2 00000002
|
||||
EQU OCR1AH3 00000003
|
||||
EQU OCR1AH4 00000004
|
||||
EQU OCR1AH5 00000005
|
||||
EQU OCR1AH6 00000006
|
||||
EQU OCR1AH7 00000007
|
||||
EQU OCR1AL0 00000000
|
||||
EQU OCR1AL1 00000001
|
||||
EQU OCR1AL2 00000002
|
||||
EQU OCR1AL3 00000003
|
||||
EQU OCR1AL4 00000004
|
||||
EQU OCR1AL5 00000005
|
||||
EQU OCR1AL6 00000006
|
||||
EQU OCR1AL7 00000007
|
||||
EQU WDTCSR 00000021
|
||||
EQU WDP0 00000000
|
||||
EQU WDP1 00000001
|
||||
EQU WDP2 00000002
|
||||
EQU WDE 00000003
|
||||
EQU WDCE 00000004
|
||||
EQU WDTOE 00000004
|
||||
EQU WDP3 00000005
|
||||
EQU WDIE 00000006
|
||||
EQU WDIF 00000007
|
||||
EQU PCIE 00000005
|
||||
EQU INT0 00000006
|
||||
EQU INT1 00000007
|
||||
EQU GIFR 0000003a
|
||||
EQU PCIF 00000005
|
||||
EQU INTF0 00000006
|
||||
EQU INTF1 00000007
|
||||
EQU UDR0 00000000
|
||||
EQU UDR1 00000001
|
||||
EQU UDR2 00000002
|
||||
EQU UDR3 00000003
|
||||
EQU UDR4 00000004
|
||||
EQU UDR5 00000005
|
||||
EQU UDR6 00000006
|
||||
EQU UDR7 00000007
|
||||
EQU USR 0000000b
|
||||
EQU MPCM 00000000
|
||||
EQU U2X 00000001
|
||||
EQU UPE 00000002
|
||||
EQU PE 00000002
|
||||
EQU DOR 00000003
|
||||
EQU FE 00000004
|
||||
EQU UDRE 00000005
|
||||
EQU TXC 00000006
|
||||
EQU RXC 00000007
|
||||
EQU UCR 0000000a
|
||||
EQU TXB8 00000000
|
||||
EQU RXB8 00000001
|
||||
EQU UCSZ2 00000002
|
||||
EQU CHR9 00000002
|
||||
EQU TXEN 00000003
|
||||
EQU RXEN 00000004
|
||||
EQU UDRIE 00000005
|
||||
EQU TXCIE 00000006
|
||||
EQU RXCIE 00000007
|
||||
EQU UCPOL 00000000
|
||||
EQU UCSZ0 00000001
|
||||
EQU UCSZ1 00000002
|
||||
EQU USBS 00000003
|
||||
EQU UPM0 00000004
|
||||
EQU UPM1 00000005
|
||||
EQU UMSEL 00000006
|
||||
EQU UBRR 00000009
|
||||
EQU ACIS0 00000000
|
||||
EQU ACIS1 00000001
|
||||
EQU ACIC 00000002
|
||||
EQU ACIE 00000003
|
||||
EQU ACI 00000004
|
||||
EQU ACO 00000005
|
||||
EQU ACBG 00000006
|
||||
EQU ACD 00000007
|
||||
EQU AIN0D 00000000
|
||||
EQU AIN1D 00000001
|
||||
EQU PORTD0 00000000
|
||||
EQU PD0 00000000
|
||||
EQU PORTD1 00000001
|
||||
EQU PD1 00000001
|
||||
EQU PORTD2 00000002
|
||||
EQU PD2 00000002
|
||||
EQU PORTD3 00000003
|
||||
EQU PD3 00000003
|
||||
EQU PORTD4 00000004
|
||||
EQU PD4 00000004
|
||||
EQU PORTD5 00000005
|
||||
EQU PD5 00000005
|
||||
EQU PORTD6 00000006
|
||||
EQU PD6 00000006
|
||||
EQU DDD0 00000000
|
||||
EQU DDD1 00000001
|
||||
EQU DDD2 00000002
|
||||
EQU DDD3 00000003
|
||||
EQU DDD4 00000004
|
||||
EQU DDD5 00000005
|
||||
EQU DDD6 00000006
|
||||
EQU PIND0 00000000
|
||||
EQU PIND1 00000001
|
||||
EQU PIND2 00000002
|
||||
EQU PIND3 00000003
|
||||
EQU PIND4 00000004
|
||||
EQU PIND5 00000005
|
||||
EQU PIND6 00000006
|
||||
EQU EEARL 0000001e
|
||||
EQU EEAR0 00000000
|
||||
EQU EEAR1 00000001
|
||||
EQU EEAR2 00000002
|
||||
EQU EEAR3 00000003
|
||||
EQU EEAR4 00000004
|
||||
EQU EEAR5 00000005
|
||||
EQU EEAR6 00000006
|
||||
EQU EEDR0 00000000
|
||||
EQU EEDR1 00000001
|
||||
EQU EEDR2 00000002
|
||||
EQU EEDR3 00000003
|
||||
EQU EEDR4 00000004
|
||||
EQU EEDR5 00000005
|
||||
EQU EEDR6 00000006
|
||||
EQU EEDR7 00000007
|
||||
EQU EERE 00000000
|
||||
EQU EEPE 00000001
|
||||
EQU EEWE 00000001
|
||||
EQU EEMPE 00000002
|
||||
EQU EEMWE 00000002
|
||||
EQU EERIE 00000003
|
||||
EQU EEPM0 00000004
|
||||
EQU EEPM1 00000005
|
||||
EQU PORTA0 00000000
|
||||
EQU PA0 00000000
|
||||
EQU PORTA1 00000001
|
||||
EQU PA1 00000001
|
||||
EQU PORTA2 00000002
|
||||
EQU PA2 00000002
|
||||
EQU DDA0 00000000
|
||||
EQU DDA1 00000001
|
||||
EQU DDA2 00000002
|
||||
EQU PINA0 00000000
|
||||
EQU PINA1 00000001
|
||||
EQU PINA2 00000002
|
||||
EQU SREG_C 00000000
|
||||
EQU SREG_Z 00000001
|
||||
EQU SREG_N 00000002
|
||||
EQU SREG_V 00000003
|
||||
EQU SREG_S 00000004
|
||||
EQU SREG_H 00000005
|
||||
EQU SREG_T 00000006
|
||||
EQU SREG_I 00000007
|
||||
EQU SPMEN 00000000
|
||||
EQU PGERS 00000001
|
||||
EQU PGWRT 00000002
|
||||
EQU RFLB 00000003
|
||||
EQU CTPB 00000004
|
||||
EQU ISC00 00000000
|
||||
EQU ISC01 00000001
|
||||
EQU ISC10 00000002
|
||||
EQU ISC11 00000003
|
||||
EQU SM0 00000004
|
||||
EQU SM 00000004
|
||||
EQU SE 00000005
|
||||
EQU SM1 00000006
|
||||
EQU PUD 00000007
|
||||
EQU CLKPS0 00000000
|
||||
EQU CLKPS1 00000001
|
||||
EQU CLKPS2 00000002
|
||||
EQU CLKPS3 00000003
|
||||
EQU CLKPCE 00000007
|
||||
EQU PORF 00000000
|
||||
EQU EXTRF 00000001
|
||||
EQU BORF 00000002
|
||||
EQU WDRF 00000003
|
||||
EQU CAL0 00000000
|
||||
EQU CAL1 00000001
|
||||
EQU CAL2 00000002
|
||||
EQU CAL3 00000003
|
||||
EQU CAL4 00000004
|
||||
EQU CAL5 00000005
|
||||
EQU CAL6 00000006
|
||||
EQU SFIOR 00000023
|
||||
EQU PSR10 00000000
|
||||
EQU PCINT0 00000000
|
||||
EQU PCINT1 00000001
|
||||
EQU PCINT2 00000002
|
||||
EQU PCINT3 00000003
|
||||
EQU PCINT4 00000004
|
||||
EQU PCINT5 00000005
|
||||
EQU PCINT6 00000006
|
||||
EQU PCINT7 00000007
|
||||
EQU GPIOR20 00000000
|
||||
EQU GPIOR21 00000001
|
||||
EQU GPIOR22 00000002
|
||||
EQU GPIOR23 00000003
|
||||
EQU GPIOR24 00000004
|
||||
EQU GPIOR25 00000005
|
||||
EQU GPIOR26 00000006
|
||||
EQU GPIOR27 00000007
|
||||
EQU GPIOR10 00000000
|
||||
EQU GPIOR11 00000001
|
||||
EQU GPIOR12 00000002
|
||||
EQU GPIOR13 00000003
|
||||
EQU GPIOR14 00000004
|
||||
EQU GPIOR15 00000005
|
||||
EQU GPIOR16 00000006
|
||||
EQU GPIOR17 00000007
|
||||
EQU GPIOR00 00000000
|
||||
EQU GPIOR01 00000001
|
||||
EQU GPIOR02 00000002
|
||||
EQU GPIOR03 00000003
|
||||
EQU GPIOR04 00000004
|
||||
EQU GPIOR05 00000005
|
||||
EQU GPIOR06 00000006
|
||||
EQU GPIOR07 00000007
|
||||
EQU USIDR0 00000000
|
||||
EQU USIDR1 00000001
|
||||
EQU USIDR2 00000002
|
||||
EQU USIDR3 00000003
|
||||
EQU USIDR4 00000004
|
||||
EQU USIDR5 00000005
|
||||
EQU USIDR6 00000006
|
||||
EQU USIDR7 00000007
|
||||
EQU USICNT0 00000000
|
||||
EQU USICNT1 00000001
|
||||
EQU USICNT2 00000002
|
||||
EQU USICNT3 00000003
|
||||
EQU USIDC 00000004
|
||||
EQU USIPF 00000005
|
||||
EQU USIOIF 00000006
|
||||
EQU USISIF 00000007
|
||||
EQU USITC 00000000
|
||||
EQU USICLK 00000001
|
||||
EQU USICS0 00000002
|
||||
EQU USICS1 00000003
|
||||
EQU USIWM0 00000004
|
||||
EQU USIWM1 00000005
|
||||
EQU USIOIE 00000006
|
||||
EQU USISIE 00000007
|
||||
EQU LB1 00000000
|
||||
EQU LB2 00000001
|
||||
EQU CKSEL0 00000000
|
||||
EQU CKSEL1 00000001
|
||||
EQU CKSEL2 00000002
|
||||
EQU CKSEL3 00000003
|
||||
EQU SUT0 00000004
|
||||
EQU SUT1 00000005
|
||||
EQU CKOUT 00000006
|
||||
EQU CKDIV8 00000007
|
||||
EQU BODLEVEL0 00000000
|
||||
EQU BODLEVEL1 00000001
|
||||
EQU BODLEVEL2 00000002
|
||||
EQU EESAVE 00000003
|
||||
EQU WDTON 00000004
|
||||
EQU SPIEN 00000005
|
||||
EQU DWEN 00000006
|
||||
EQU RSTDISBL 00000007
|
||||
EQU SELFPRGEN 00000000
|
||||
DEF XH r27
|
||||
DEF XL r26
|
||||
DEF YH r29
|
||||
DEF YL r28
|
||||
DEF ZH r31
|
||||
DEF ZL r30
|
||||
EQU FLASHEND 000003ff
|
||||
EQU IOEND 0000003f
|
||||
EQU SRAM_START 00000060
|
||||
EQU SRAM_SIZE 00000080
|
||||
EQU RAMEND 000000df
|
||||
EQU XRAMEND 00000000
|
||||
EQU E2END 0000007f
|
||||
EQU EEPROMEND 0000007f
|
||||
EQU EEADRBITS 00000007
|
||||
EQU NRWW_START_ADDR 00000000
|
||||
EQU NRWW_STOP_ADDR 000003ff
|
||||
EQU RWW_START_ADDR 00000000
|
||||
EQU RWW_STOP_ADDR 00000000
|
||||
EQU PAGESIZE 00000010
|
||||
EQU INT0addr 00000001
|
||||
EQU INT1addr 00000002
|
||||
EQU ICP1addr 00000003
|
||||
EQU OC1Aaddr 00000004
|
||||
EQU OC1addr 00000004
|
||||
EQU OVF1addr 00000005
|
||||
EQU OVF0addr 00000006
|
||||
EQU URXCaddr 00000007
|
||||
EQU URXC0addr 00000007
|
||||
EQU UDREaddr 00000008
|
||||
EQU UDRE0addr 00000008
|
||||
EQU UTXCaddr 00000009
|
||||
EQU UTXC0addr 00000009
|
||||
EQU ACIaddr 0000000a
|
||||
EQU PCIaddr 0000000b
|
||||
EQU OC1Baddr 0000000c
|
||||
EQU OC0Aaddr 0000000d
|
||||
EQU OC0Baddr 0000000e
|
||||
EQU USI_STARTaddr 0000000f
|
||||
EQU USI_OVFaddr 00000010
|
||||
EQU ERDYaddr 00000011
|
||||
EQU WDTaddr 00000012
|
||||
EQU INT_VECTORS_SIZE 00000013
|
||||
DSEG SerialNumber 00000060
|
||||
CSEG ProgramEntryPoint 00000118
|
||||
EQU LCD_PORT 00000018
|
||||
EQU LCD_DDR 00000017
|
||||
EQU LCD_PIN 00000016
|
||||
EQU LCD_D4 00000000
|
||||
EQU LCD_D5 00000001
|
||||
EQU LCD_D6 00000002
|
||||
EQU LCD_D7 00000003
|
||||
EQU LCD_RS 00000004
|
||||
EQU LCD_EN 00000006
|
||||
DEF drem8u r15
|
||||
DEF dres8u r16
|
||||
DEF dd8u r16
|
||||
DEF dv8u r17
|
||||
DEF dcnt8u r18
|
||||
CSEG div8u 00000013
|
||||
CSEG d8u_1 00000015
|
||||
CSEG d8u_2 00000019
|
||||
CSEG d8u_3 0000001f
|
||||
CSEG LCD_WriteNibble 00000021
|
||||
CSEG LCD_WriteData 00000034
|
||||
CSEG Wait4xCycles 00000095
|
||||
CSEG LCD_WriteCommand 0000003e
|
||||
CSEG WaitMiliseconds 00000098
|
||||
CSEG LCD_WriteString 00000047
|
||||
CSEG exit 0000004c
|
||||
CSEG LCD_WriteHexDigit 0000004d
|
||||
CSEG Num 00000053
|
||||
CSEG LCD_WriteHex8 00000057
|
||||
CSEG LCD_WriteDecimal 00000061
|
||||
CSEG LCD_WriteDecimalLoop 00000062
|
||||
CSEG LCD_WriteDecimalLoop2 00000068
|
||||
CSEG LCD_SetAddressDD 0000006f
|
||||
CSEG LCD_SetAddressCG 00000072
|
||||
CSEG LCD_Init 00000075
|
||||
CSEG InitLoop 00000080
|
||||
CSEG WaitMsLoop 00000099
|
||||
EQU OW_PORT 00000012
|
||||
EQU OW_PIN 00000010
|
||||
EQU OW_DDR 00000011
|
||||
EQU OW_DQ 00000006
|
||||
DEF OWCount r17
|
||||
CSEG OWReset 000000a3
|
||||
CSEG OWWriteBit 000000b3
|
||||
CSEG OWWriteZero 000000b7
|
||||
CSEG OWWriteOne 000000b9
|
||||
CSEG OWWriteByte 000000c0
|
||||
CSEG OWWriteLoop 000000c2
|
||||
CSEG OWReadBit 000000c9
|
||||
CSEG OWReadBitEnd 000000da
|
||||
CSEG OWReadByte 000000db
|
||||
CSEG OWReadLoop 000000dd
|
||||
DSEG _crc 00000068
|
||||
CSEG CRC8Update 000000e4
|
||||
CSEG CRC8L 000000e9
|
||||
CSEG CRC8zero 000000f2
|
||||
CSEG CRC8Init 000000ff
|
||||
CSEG GetCRC8 00000105
|
||||
CSEG Text1 00000108
|
||||
CSEG Text2 00000110
|
||||
CSEG MainLoop 00000125
|
||||
CSEG StoreLoop 00000132
|
||||
CSEG LoadLoop 0000013f
|
||||
BIN
ibutton-numberSample/ibutton-number-read.obj
Normal file
BIN
ibutton-numberSample/ibutton-number-read.obj
Normal file
Binary file not shown.
75
ibutton-numberSample/labels.tmp
Normal file
75
ibutton-numberSample/labels.tmp
Normal file
@@ -0,0 +1,75 @@
|
||||
<ASSEMBLER_INFO>
|
||||
<VERSION>2.1.30</VERSION>
|
||||
<DEVICE>ATtiny2313</DEVICE>
|
||||
<WORKING_DIR>F:\WORK\uK\AVR\Projects\ibutton-number-read</WORKING_DIR>
|
||||
<INCLUDE_PATH>
|
||||
<DIR>C:\Program Files (x86)\Atmel\AVR Tools\AvrAssembler2\Appnotes</DIR>
|
||||
</INCLUDE_PATH>
|
||||
<SOURCE_FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\main.asm</SOURCE_FILE>
|
||||
<INCLUDED_FILES>
|
||||
<FILE>C:\Program Files (x86)\Atmel\AVR Tools\AvrAssembler2\Appnotes\tn2313def.inc</FILE>
|
||||
<FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\vectors.asm</FILE>
|
||||
<FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\hd44780.asm</FILE>
|
||||
<FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\hd44780.inc</FILE>
|
||||
<FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\div8u.asm</FILE>
|
||||
<FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\wait.asm</FILE>
|
||||
<FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\1-wire.asm</FILE>
|
||||
<FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\crc8.asm</FILE>
|
||||
</INCLUDED_FILES>
|
||||
<OBJECT_FILES>
|
||||
<FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\ibutton-number-read.obj</FILE>
|
||||
</OBJECT_FILES>
|
||||
<HEX_FILES>
|
||||
<FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\ibutton-number-read.hex</FILE>
|
||||
</HEX_FILES>
|
||||
<OUTPUT_FILES>
|
||||
<FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\ibutton-number-read.map</FILE>
|
||||
</OUTPUT_FILES>
|
||||
<LABELS>
|
||||
<SerialNumber><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\main.asm</FILE><LINE>17</LINE></SerialNumber>
|
||||
<ProgramEntryPoint><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\main.asm</FILE><LINE>42</LINE></ProgramEntryPoint>
|
||||
<div8u><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\div8u.asm</FILE><LINE>12</LINE></div8u>
|
||||
<d8u_1><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\div8u.asm</FILE><LINE>15</LINE></d8u_1>
|
||||
<d8u_2><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\div8u.asm</FILE><LINE>20</LINE></d8u_2>
|
||||
<d8u_3><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\div8u.asm</FILE><LINE>27</LINE></d8u_3>
|
||||
<LCD_WriteNibble><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\hd44780.asm</FILE><LINE>34</LINE></LCD_WriteNibble>
|
||||
<LCD_WriteData><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\hd44780.asm</FILE><LINE>62</LINE></LCD_WriteData>
|
||||
<Wait4xCycles><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\wait.asm</FILE><LINE>24</LINE></Wait4xCycles>
|
||||
<LCD_WriteCommand><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\hd44780.asm</FILE><LINE>77</LINE></LCD_WriteCommand>
|
||||
<WaitMiliseconds><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\wait.asm</FILE><LINE>32</LINE></WaitMiliseconds>
|
||||
<LCD_WriteString><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\hd44780.asm</FILE><LINE>90</LINE></LCD_WriteString>
|
||||
<exit><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\hd44780.asm</FILE><LINE>96</LINE></exit>
|
||||
<LCD_WriteHexDigit><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\hd44780.asm</FILE><LINE>101</LINE></LCD_WriteHexDigit>
|
||||
<Num><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\hd44780.asm</FILE><LINE>108</LINE></Num>
|
||||
<LCD_WriteHex8><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\hd44780.asm</FILE><LINE>116</LINE></LCD_WriteHex8>
|
||||
<LCD_WriteDecimal><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\hd44780.asm</FILE><LINE>131</LINE></LCD_WriteDecimal>
|
||||
<LCD_WriteDecimalLoop><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\hd44780.asm</FILE><LINE>133</LINE></LCD_WriteDecimalLoop>
|
||||
<LCD_WriteDecimalLoop2><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\hd44780.asm</FILE><LINE>141</LINE></LCD_WriteDecimalLoop2>
|
||||
<LCD_SetAddressDD><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\hd44780.asm</FILE><LINE>152</LINE></LCD_SetAddressDD>
|
||||
<LCD_SetAddressCG><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\hd44780.asm</FILE><LINE>159</LINE></LCD_SetAddressCG>
|
||||
<LCD_Init><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\hd44780.asm</FILE><LINE>166</LINE></LCD_Init>
|
||||
<InitLoop><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\hd44780.asm</FILE><LINE>182</LINE></InitLoop>
|
||||
<WaitMsLoop><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\wait.asm</FILE><LINE>34</LINE></WaitMsLoop>
|
||||
<OWReset><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\1-wire.asm</FILE><LINE>17</LINE></OWReset>
|
||||
<OWWriteBit><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\1-wire.asm</FILE><LINE>43</LINE></OWWriteBit>
|
||||
<OWWriteZero><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\1-wire.asm</FILE><LINE>48</LINE></OWWriteZero>
|
||||
<OWWriteOne><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\1-wire.asm</FILE><LINE>51</LINE></OWWriteOne>
|
||||
<OWWriteByte><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\1-wire.asm</FILE><LINE>63</LINE></OWWriteByte>
|
||||
<OWWriteLoop><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\1-wire.asm</FILE><LINE>66</LINE></OWWriteLoop>
|
||||
<OWReadBit><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\1-wire.asm</FILE><LINE>77</LINE></OWReadBit>
|
||||
<OWReadBitEnd><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\1-wire.asm</FILE><LINE>95</LINE></OWReadBitEnd>
|
||||
<OWReadByte><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\1-wire.asm</FILE><LINE>100</LINE></OWReadByte>
|
||||
<OWReadLoop><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\1-wire.asm</FILE><LINE>103</LINE></OWReadLoop>
|
||||
<_crc><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\crc8.asm</FILE><LINE>13</LINE></_crc>
|
||||
<CRC8Update><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\crc8.asm</FILE><LINE>21</LINE></CRC8Update>
|
||||
<CRC8L><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\crc8.asm</FILE><LINE>28</LINE></CRC8L>
|
||||
<CRC8zero><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\crc8.asm</FILE><LINE>37</LINE></CRC8zero>
|
||||
<CRC8Init><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\crc8.asm</FILE><LINE>53</LINE></CRC8Init>
|
||||
<GetCRC8><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\crc8.asm</FILE><LINE>62</LINE></GetCRC8>
|
||||
<Text1><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\main.asm</FILE><LINE>34</LINE></Text1>
|
||||
<Text2><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\main.asm</FILE><LINE>36</LINE></Text2>
|
||||
<MainLoop><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\main.asm</FILE><LINE>63</LINE></MainLoop>
|
||||
<StoreLoop><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\main.asm</FILE><LINE>84</LINE></StoreLoop>
|
||||
<LoadLoop><FILE>F:\WORK\uK\AVR\Projects\ibutton-number-read\main.asm</FILE><LINE>101</LINE></LoadLoop>
|
||||
</LABELS>
|
||||
</ASSEMBLER_INFO>
|
||||
107
ibutton-numberSample/main.asm
Normal file
107
ibutton-numberSample/main.asm
Normal file
@@ -0,0 +1,107 @@
|
||||
;------------------------------------------------------------------------------
|
||||
; iButton serial number reader
|
||||
; http://avr-mcu.dxp.pl
|
||||
; e-mail: radek(at)dxp.pl
|
||||
; (c) Radoslaw Kwiecien
|
||||
;------------------------------------------------------------------------------
|
||||
.include "tn2313def.inc"
|
||||
;------------------------------------------------------------------------------
|
||||
; Defines
|
||||
;------------------------------------------------------------------------------
|
||||
#define F_CPU 8000000
|
||||
;------------------------------------------------------------------------------
|
||||
; Data segment, variable definitions
|
||||
;------------------------------------------------------------------------------
|
||||
.dseg
|
||||
|
||||
SerialNumber: .byte 8
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; Code segment
|
||||
;------------------------------------------------------------------------------
|
||||
.cseg
|
||||
;------------------------------------------------------------------------------
|
||||
; Include required files
|
||||
;------------------------------------------------------------------------------
|
||||
#include "vectors.asm"
|
||||
#include "hd44780.asm"
|
||||
#include "wait.asm"
|
||||
#include "1-wire.asm"
|
||||
#include "crc8.asm"
|
||||
;------------------------------------------------------------------------------
|
||||
; Constants definition
|
||||
;------------------------------------------------------------------------------
|
||||
Text1 :
|
||||
.db "iButton Reader",0,0
|
||||
Text2 :
|
||||
.db "avr-mcu.dxp.pl",0,0
|
||||
;------------------------------------------------------------------------------
|
||||
; Program entry point
|
||||
;------------------------------------------------------------------------------
|
||||
ProgramEntryPoint:
|
||||
ldi r16, LOW(RAMEND) ; Initialize stack pointer
|
||||
out SPL, r16 ;
|
||||
|
||||
rcall LCD_Init ; Initialize LCD
|
||||
|
||||
ldi r16, (HD44780_LINE0 + 1) ;
|
||||
rcall LCD_SetAddressDD ; Set Display Data address to (0,1)
|
||||
|
||||
ldi ZL, LOW(Text1 << 1) ; Load string address to Z
|
||||
ldi ZH, HIGH(Text1<< 1) ;
|
||||
rcall LCD_WriteString ; Display string
|
||||
|
||||
ldi r16, (HD44780_LINE1 + 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
|
||||
|
||||
MainLoop:
|
||||
rcall OWReset ; One wire reset
|
||||
brts MainLoop ; If device not present go to MainLoop
|
||||
|
||||
ldi r16, 0x33 ; Write ReadRom command
|
||||
rcall OWWriteByte ;
|
||||
|
||||
rcall CRC8Init ; Initialize CRC8 value
|
||||
|
||||
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,8 ; 8 digits to display
|
||||
LoadLoop:
|
||||
ld r16, Y+ ; load to r16 byte from table
|
||||
rcall LCD_WriteHex8 ; display it on LCD in HEX
|
||||
dec r17 ; decrement loop conouter
|
||||
brne LoadLoop ; if not zero, jump to LoadLoop
|
||||
rjmp MainLoop ; jump to MainLoop
|
||||
;------------------------------------------------------------------------------
|
||||
; End of file
|
||||
;------------------------------------------------------------------------------
|
||||
39
ibutton-numberSample/vectors.asm
Normal file
39
ibutton-numberSample/vectors.asm
Normal file
@@ -0,0 +1,39 @@
|
||||
.cseg
|
||||
.org 0 ; Reset
|
||||
rjmp ProgramEntryPoint
|
||||
.org INT0addr ; External Interrupt Request 0
|
||||
reti
|
||||
.org INT1addr ; External Interrupt Request 1
|
||||
reti
|
||||
.org ICP1addr ; Timer/Counter1 Capture Event
|
||||
reti
|
||||
.org OC1Aaddr ; Timer/Counter1 Compare Match A
|
||||
reti
|
||||
.org OVF1addr ; Timer/Counter1 Overflow
|
||||
reti
|
||||
.org OVF0addr ; Timer/Counter0 Overflow
|
||||
reti
|
||||
.org URXCaddr ; USART, Rx Complete
|
||||
reti
|
||||
.org UDREaddr ; USART Data Register Empty
|
||||
reti
|
||||
.org UTXCaddr ; USART, Tx Complete
|
||||
reti
|
||||
.org ACIaddr ; Analog Comparator
|
||||
reti
|
||||
.org PCIaddr ;
|
||||
reti
|
||||
.org OC1Baddr ;
|
||||
reti
|
||||
.org OC0Aaddr ;
|
||||
reti
|
||||
.org OC0Baddr ;
|
||||
reti
|
||||
.org USI_STARTaddr ; USI Start Condition
|
||||
reti
|
||||
.org USI_OVFaddr ; USI Overflow
|
||||
reti
|
||||
.org ERDYaddr ;
|
||||
reti
|
||||
.org WDTaddr ; Watchdog Timer Overflow
|
||||
reti
|
||||
47
ibutton-numberSample/wait.asm
Normal file
47
ibutton-numberSample/wait.asm
Normal file
@@ -0,0 +1,47 @@
|
||||
;------------------------------------------------------------------------------
|
||||
; Busy-wait loops utilities module
|
||||
; For F_CPU >= 4MHz
|
||||
; http://avr-mcu.dxp.pl
|
||||
; e-mail : radek@dxp.pl
|
||||
; (c) Radoslaw Kwiecien
|
||||
;------------------------------------------------------------------------------
|
||||
|
||||
#ifndef F_CPU
|
||||
#error "F_CPU must be defined!"
|
||||
#endif
|
||||
|
||||
#if F_CPU < 4000000
|
||||
#warning "F_CPU too low, possible wrong delay"
|
||||
#endif
|
||||
|
||||
#define CYCLES_PER_US (F_CPU/1000000)
|
||||
#define C4PUS (CYCLES_PER_US/4)
|
||||
#define DVUS(x) (C4PUS*x)
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; Input : XH:XL - number of CPU cycles to wait (divided by four)
|
||||
;------------------------------------------------------------------------------
|
||||
Wait4xCycles:
|
||||
sbiw XH:XL, 1 ; x-- (2 cycles)
|
||||
brne Wait4xCycles ; jump if not zero (2 cycles)
|
||||
ret
|
||||
|
||||
;------------------------------------------------------------------------------
|
||||
; Input : r16 - number of miliseconds to wait
|
||||
;------------------------------------------------------------------------------
|
||||
WaitMiliseconds:
|
||||
push r16
|
||||
WaitMsLoop:
|
||||
ldi XH,HIGH(DVUS(500))
|
||||
ldi XL,LOW(DVUS(500))
|
||||
rcall Wait4xCycles
|
||||
ldi XH,HIGH(DVUS(500))
|
||||
ldi XL,LOW(DVUS(500))
|
||||
rcall Wait4xCycles
|
||||
dec r16
|
||||
brne WaitMsLoop
|
||||
pop r16
|
||||
ret
|
||||
;------------------------------------------------------------------------------
|
||||
;
|
||||
;------------------------------------------------------------------------------
|
||||
Reference in New Issue
Block a user