|
|
@@ -33,6 +33,11 @@ main:
|
|
|
|
|
|
mode_select:
|
|
|
|
|
|
+ in main_r, PORTC ;toggle PC0
|
|
|
+ ldi usart_r, 1<<PC0
|
|
|
+ eor main_r, usart_r
|
|
|
+ out PORTC, main_r
|
|
|
+
|
|
|
;Receive Frame----------------------------------------------------------
|
|
|
ldi X_l, lo8(cmd_ptr) ;set Command-Ptr
|
|
|
ldi X_h, hi8(cmd_ptr)
|
|
|
@@ -40,15 +45,15 @@ mode_select:
|
|
|
sbr usart_r, (1<<RXEN0)|(1<<RXCIE0)
|
|
|
sts UCSR0B, usart_r
|
|
|
|
|
|
- cpi X_l, 0x03 ;check if Frame rec
|
|
|
- brne .-4
|
|
|
+ lds usart_r, frame_cnt
|
|
|
+ cpi usart_r, 0x03 ;check if Frame rec
|
|
|
+ brne .-8
|
|
|
|
|
|
lds usart_r, UCSR0B ;disable Receiver
|
|
|
cbr usart_r, (1<<RXEN0)|(1<<RXCIE0)
|
|
|
sts UCSR0B, usart_r
|
|
|
sts UDR0, false ;clear UDR
|
|
|
-
|
|
|
-sbi PORTC, PC0 ;delete
|
|
|
+ sts frame_cnt, false ;reset Frame cnt
|
|
|
|
|
|
call cmd_rebuild ;read Cmd
|
|
|
|
|
|
@@ -67,20 +72,23 @@ sbi PORTC, PC0 ;delete
|
|
|
|
|
|
;Send Frame-------------------------------------------------------------
|
|
|
|
|
|
-
|
|
|
ldi X_l, lo8(cmd_ptr) ;set Command-Ptr
|
|
|
ldi X_h, hi8(cmd_ptr)
|
|
|
lds usart_r, UCSR0B ;enable UDRI
|
|
|
sbr usart_r, 1<<UDRIE0
|
|
|
sts UCSR0B, usart_r
|
|
|
- cpi X_l, 0x04 ;check if Frame send
|
|
|
- brne .-4
|
|
|
+
|
|
|
+ lds usart_r, frame_cnt
|
|
|
+ cpi usart_r, 0x04 ;check if Frame send
|
|
|
+ brne .-8
|
|
|
+
|
|
|
lds usart_r, UCSR0B ;disable TX, TXCI
|
|
|
cbr usart_r, (1<<TXEN0)|(1<<TXCIE0)|(1<<UDRIE0)
|
|
|
sts UCSR0B, usart_r
|
|
|
sts UDR0, false ;clear UDR
|
|
|
+ sts frame_cnt, false ;reset Frame cnt
|
|
|
|
|
|
- sbi PORTC, PC4 ;delete
|
|
|
+ sbi PORTC, PC1 ;read Page complete
|
|
|
|
|
|
rjmp mode_select
|
|
|
|
|
|
@@ -104,8 +112,8 @@ cmd_rebuild:
|
|
|
andi main_r, nibble_lo
|
|
|
swap main_r
|
|
|
or option, main_r
|
|
|
-
|
|
|
- sbi PORTC, PC1 ;delete
|
|
|
+ brne .+4 ;check valid Mode
|
|
|
+ jmp mode_select
|
|
|
|
|
|
ret
|
|
|
|
|
|
@@ -116,8 +124,6 @@ mode_page_read:
|
|
|
|
|
|
;Send Acknoledgement---------------------------------------------------
|
|
|
|
|
|
-sbi PORTC, PC2
|
|
|
-
|
|
|
sts cmd_mode, option ;verify Mode
|
|
|
sts cmd_opt_lo, option
|
|
|
sts cmd_opt_hi, option
|
|
|
@@ -127,12 +133,16 @@ sbi PORTC, PC2
|
|
|
lds usart_r, UCSR0B ;enable UDRI
|
|
|
sbr usart_r, 1<<UDRIE0
|
|
|
sts UCSR0B, usart_r
|
|
|
- cpi X_l, 0x04 ;check if Frame send
|
|
|
- brne .-4
|
|
|
+
|
|
|
+ lds usart_r, frame_cnt
|
|
|
+ cpi usart_r, 0x04 ;check if Frame send
|
|
|
+ brne .-8
|
|
|
+
|
|
|
lds usart_r, UCSR0B ;disable TX, TXCI
|
|
|
cbr usart_r, (1<<TXEN0)|(1<<TXCIE0)|(1<<UDRIE0)
|
|
|
sts UCSR0B, usart_r
|
|
|
sts UDR0, false ;clear UDR
|
|
|
+ sts frame_cnt, false ;reset Frame cnt
|
|
|
|
|
|
;Read Page--------------------------------------------------------------
|
|
|
|
|
|
@@ -142,21 +152,20 @@ sbi PORTC, PC2
|
|
|
sbr usart_r, (1<<RXEN0)|(1<<RXCIE0)
|
|
|
sts UCSR0B, usart_r
|
|
|
|
|
|
- cp X_l, option ;check if Page rec
|
|
|
- brne .-4
|
|
|
+ lds usart_r, frame_cnt
|
|
|
+ cp usart_r, option ;check if Page rec
|
|
|
+ brne .-8
|
|
|
|
|
|
lds usart_r, UCSR0B ;disable Receiver
|
|
|
cbr usart_r, (1<<RXEN0)|(1<<RXCIE0)
|
|
|
sts UCSR0B, usart_r
|
|
|
sts UDR0, false ;clear UDR
|
|
|
+ sts frame_cnt, false ;reset Frame cnt
|
|
|
|
|
|
- sbi PORTC, PC3
|
|
|
-
|
|
|
-;Recode Command----------------------------------------------------------
|
|
|
-
|
|
|
- mov main_r, mode ;reset Mode
|
|
|
- ori main_r, frame_mask
|
|
|
- sts cmd_mode, main_r
|
|
|
+ ldi main_r, frame_mask ;signal Page rec
|
|
|
+ sts cmd_mode, main_r
|
|
|
+ sts cmd_opt_lo, main_r
|
|
|
+ sts cmd_opt_hi, main_r
|
|
|
|
|
|
ret
|
|
|
|