|
楼主 |
发表于 2008-6-25 00:27:48
|
显示全部楼层
我想做一个累加器,请帮我看看哪里不对!谢谢
.ORG $0000
RJMP RESET ;RESET PRO
.ORG $0010
RJMP TIM0_OVF ;FLAG OF TIMER0 OVERING
RESET:
LDI R24,HIGH(RAMEND)
STS SPH,R10
LDI R24,LOW(RAMEND)
STS SPL,R10
IO_DEFINE:
LDI R24,0XFF
OUT DDRB,R24
LDI R24,0XFF
OUT PORTB,R24 ;CLS LCDSEG
LDI R24,0XFF
OUT DDRC,R24
LDI R24,0X00
OUT PORTC,R24 ;CLS LCDCOM
LDI R24,0XFF
OUT DDRD,R24
LDI R24,0X00
OUT PORTD,R24 ;ALL LED ON
TIMER_DEFINE:
LDI R24,0X00
OUT TCCR0A,R24
LDI R24,0X05
OUT TCCR0B,R24 ;SYSCLK(1M)/1024
LDI R24,0X86
OUT TCNT0,R24 ;(256-134)*1024/1=125US
LDI R24,0X01
STS TIMSK0,R24 ;ENABLE INT
LDI GEWEI,0X00 ;30单元存储个位值
LDI BAIWEI,0X00 ;31单元存储十位值
LDI QIANWEI,0X00 ;32单元存储百位值
LDI SHIWEI,0X00 ;33单元存储千位值
SEI ;ENABLE GOBAL
;=====================================================================================================
MAIN:
CPI FLAG_2MS,0X02 ;2MS到否
BRNE MAIN
CLR FLAG_2MS
RCALL DISPLAY
CPI FLAG_1S,0X09
BRNE MAIN
RCALL COUNTER_ADD
RJMP MAIN
;=====================================================================================================
COUNTER_ADD:
INC GEWEI ;个位值加1
CPI GEWEI,0X0A
BRNE COUNTER_ADD_BACK
CLR GEWEI
INC SHIWEI ;十位值加1(个位到10的进位)
CPI SHIWEI,0X0A
BRNE COUNTER_ADD_BACK ;
CLR SHIWEI
;
INC BAIWEI ;百位值加1(十位到10的进位)
CPI BAIWEI,0X0A
BRNE COUNTER_ADD_BACK ;
CLR BAIWEI ;百位到10清零
INC QIANWEI ;千位值加1(百位到10的进位)
CPI QIANWEI,0X0A ;
BRNE COUNTER_ADD_BACK
CLR QIANWEI ;千位到10清零
CLR GEWEI
CLR SHIWEI
CLR BAIWEI
COUNTER_ADD_BACK:
RET
;====================================================================================================
DISPLAY:
CLR R0
LDI ZL,LOW(TABLE)
LDI ZH,HIGH(TABLE)
ADD ZL,GEWEI
LPM
OUT PORTB,R0 ;
CLR R0
LDI ZL,LOW(TABLE*2)
LDI ZH,HIGH(TABLE*2)
ADD ZL,SHIWEI
LPM
OUT PORTB,R0 ;
CLR R0
LDI ZL,LOW(TABLE*2)
LDI ZH,HIGH(TABLE)
ADD ZL,BAIWEI
LPM
OUT PORTB,R0 ;
CLR R0
LDI ZL,LOW(TABLE)
LDI ZH,HIGH(TABLE)
ADD ZL,QIANWEI
LPM
OUT PORTB,R0 ;
DISPLAY_BACK:
RET
;====================================================================================================
.ORG 0XF70
TABLE: .db 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90 ;段码表
; 0 1 2 3 4 5 6 7 8 9 对应内容
;====================================================================================================
TIM0_OVF:
IN R24,SREG
PUSH R24
LDI R24,0X86
OUT TCNT0,R24
INC FLAG_2MS
INC FLAG_1S
POP R24
OUT SREG,R24
reti
;==================================================================================================== |
|