thank you very much:)hmm I just want to programm it.:)I haven't built it
yet..so I don't know what is resistor's values..:
here is my trying but it dosn't work.. maybe u can help me...I don't
know exactly how to display data on portB
.include "m32def.inc"
.equ Nbr_of_digits=4
.equ A=0x1234
.dseg
.org 0x60
t0_ovf_cnt: .byte 2 ;timer 0 overflow counter(16-bit)
NextDigit: .byte 1
Tulos: .byte 1
.org 0x100
Result: .byte 20
B: .byte 2
.cseg
.org 0
jmp Start
jmp EXT_INT0_SVC
jmp EXT_INT1_SVC
jmp EXT_INT2_SVC
jmp TIMER2_COMP_SVC
jmp TIMER2_OVF_SVC
jmp TIMER2_CAPT_SVC
jmp TIMER1_COMPA_SVC
jmp TIMER1_COMPB_SVC
jmp TIMER1_CVF_SVC
jmp TIMER0_COMP_SVC
jmp TIMER0_OVF_SVC
jmp ST_COMPLETE_SVC ;serial transfer complete
jmp RX_COMPLETE_SVC
jmp DR_EMPTY_SVC ;USART DATA Reg Empty
jmp TX_COMPLETE_SVC
jmp AD_READY_SVC
jmp EEPROM_READY_SVC
jmp ANA_COMA_SVC
jmp TWI_SVC ;2 Wire Serial Interface
jmp SPM_READY_SVC
Start:
ldi R16, Low(RAMEND)
out SPL, R16
ldi R16,HIGH(RAMEND)
out SPH,R16
clr r17
ldi r19, Nbr_of_digits ;laskuri
ldi YL,LOW(Result)
ldi YH,HIGH(Result)
ldi r16, $FF
out DDRB, r16
;
ldi r16, $0F
out DDRC, r16
ldi r16,0b11111110
sts NextDigit, r16
;
call ShowHex
call TIMER0_OVF_SVC_INIT
sei ;Global Interrupt Enable
LOOP:
rjmp LOOP
TIMER0_OVF_SVC_INIT:
in r16,TCCR0
ori r16,(1<<CS00) ;bittien asetus
;ori r16,(1<<CS02)|(1<<CS00) ;bittien asetus
out TCCR0, r16
in r16,TIMSK
ori r16,(1<<TOIE0)
out TIMSK,r16
clr r16
sts t0_ovf_cnt,r16 ;alapään nollaus
sts t0_ovf_cnt+1,r16 ;yläpään nollaus
ret
TIMER0_OVF_SVC:
push r24
in r24,SREG
push r24
push r25
lds r24,t0_ovf_cnt
lds r25,t0_ovf_cnt+1
adiw r25:r24,1
sts t0_ovf_cnt,r24
sts t0_ovf_cnt+1,r25
pop r25
pop r24
out SREG,r24
pop r24
sei
ldi r19,Nbr_of_digits
dec r19
breq TIMER0_OVF_SVC_INIT
;tähän toiminto eli digitien päivitys
;joku tila muuttuja, jonka arvo kasvaa yhdellä(ram:ssa)
reti
EXT_INT0_SVC:
EXT_INT1_SVC:
EXT_INT2_SVC:
TIMER2_COMP_SVC:
TIMER2_OVF_SVC:
TIMER2_CAPT_SVC:
TIMER1_COMPA_SVC:
TIMER1_COMPB_SVC:
TIMER1_CVF_SVC:
TIMER0_COMP_SVC:
;TIMER0_OVF_SVC:
ST_COMPLETE_SVC:
RX_COMPLETE_SVC:
DR_EMPTY_SVC:
TX_COMPLETE_SVC:
AD_READY_SVC:
EEPROM_READY_SVC:
ANA_COMA_SVC:
TWI_SVC:
SPM_READY_SVC:
reti
Nibble2Bin:
ldi ZL,LOW ( ConvTbl<<1 )
ldi ZH,HIGH( ConvTbl<<1 )
andi r16,0x0f
clr r17
add ZL,r16
adc ZH,r17
lpm r18,Z
st Y+, r18
out PORTB, Y+
ret
.org 0x200
ConvTbl:
.db 0b00111111,0b00000110,0b01011011,0b01001111,0b01100110,0b01101101
.db 0b01111100,0b00000111,0b01111111,0b01100111,0b00001010,0b00001011
.db 0b00001100,0b00001101,0b00001110,0b00001111
ShowHex:
clr r16
clr r17
ldi r16,LOW(A)
ldi r17,HIGH(A)
sts B,r16
sts B+1,r17
call Byte2Nibble
;lds r16,A
;swap r16
;andi r16,0x0f
ret
Byte2Nibble:
push r16
swap r16
andi r16,0x0f
call Nibble2bin
pop r16
andi r16,0x0f
call Nibble2bin
ret