浏览代码

Comm_Prob

jakob 5 年之前
父节点
当前提交
22883f9971
共有 3 个文件被更改,包括 73 次插入42 次删除
  1. 37 9
      Source/ASM_Source/main.s
  2. 36 33
      Source/ASM_Source/prog.hex
  3. 二进制
      Source/ASM_Source/prog.o

+ 37 - 9
Source/ASM_Source/main.s

@@ -33,10 +33,7 @@ main:
 
 mode_select:
 
-	in 		main_r, PORTC							;toggle PC0
-	ldi		usart_r, 1<<PC0
-	eor		main_r, usart_r
-	out		PORTC, main_r
+	sbi		PORTC, PC0								;Signal State
 
 ;Receive Frame----------------------------------------------------------
 	ldi		X_l, lo8(cmd_ptr)						;set Command-Ptr
@@ -88,7 +85,7 @@ mode_select:
 	sts		UDR0, false								;clear UDR
 	sts		frame_cnt, false						;reset Frame cnt
 
-	sbi		PORTC, PC1								;read Page complete
+	sbi		PORTC, PC4								;Signal State
 
 	rjmp 	mode_select
 
@@ -96,6 +93,8 @@ mode_select:
 ;Cmd rebuild
 
 cmd_rebuild:
+	sbi		PORTC, PC1								;Signal State
+
 	lds 	main_r, cmd_mode						;set Mode
 	andi	main_r, nibble_lo
 	ldi		mode, 0x01
@@ -122,6 +121,8 @@ cmd_rebuild:
 
 mode_page_read:
 
+	sbi		PORTC, PC2								;Signal State
+
 ;Send Acknoledgement---------------------------------------------------
 
 	sts		cmd_mode, option 						;verify Mode
@@ -144,7 +145,7 @@ mode_page_read:
 	sts		UDR0, false								;clear UDR
 	sts		frame_cnt, false						;reset Frame cnt
 
-;Read Page--------------------------------------------------------------
+;Read Page-------------------------------------------------------------
 
 	ldi		X_l, lo8(page_ptr)						;set Page-Ptr
 	ldi		X_h, hi8(page_ptr)
@@ -153,8 +154,10 @@ mode_page_read:
 	sts		UCSR0B, usart_r
 
 	lds		usart_r, frame_cnt
-	cp		usart_r, option							;check if Page rec
-	brne	.-8
+	mov		main_r, option
+	lsl		main_r
+	cp		usart_r, main_r							;check if Page rec
+	brne	.-12
 
 	lds		usart_r, UCSR0B							;disable Receiver
 	cbr 	usart_r, (1<<RXEN0)|(1<<RXCIE0)
@@ -162,8 +165,33 @@ mode_page_read:
 	sts		UDR0, false								;clear UDR
 	sts		frame_cnt, false						;reset Frame cnt
 
+	sbi		PORTC, PC3								;Signal State
+
+;Rebuild Page-----------------------------------------------------------
+
+	ldi		X_l, lo8(page_ptr)						;set Pointer
+	ldi		X_h, hi8(page_ptr)						;for Rebuild
+	ldi		Y_l, lo8(page_ptr)
+	inc 	Y_l
+	ldi		Y_h, hi8(page_ptr)
+	ldi		Z_l, lo8(page_ptr)
+	ldi		Z_h, hi8(page_ptr)
+
+page_rebuild:
+	ld 		main_r, X 								;Remove Mask and
+	adiw	X_l, 2									;reconstruct Bytes
+	ld 		usart_r, Y
+	adiw 	Y_l, 2
+	andi	main_r, nibble_lo
+	andi	usart_r, nibble_lo
+	swap	usart_r
+	or 		main_r, usart_r
+	st 		Z+, main_r	
+	dec		option
+	brne 	page_rebuild
+
 	ldi		main_r, frame_mask						;signal Page rec
-	sts		cmd_mode, main_r 						
+	sts		cmd_mode, main_r 						;by sending mask
 	sts 	cmd_opt_lo, main_r
 	sts 	cmd_opt_hi, main_r
 

+ 36 - 33
Source/ASM_Source/prog.hex

@@ -1,38 +1,41 @@
 :100000000C9434000C9400000C9400000C9400003C
 :100010000C9400000C9400000C9400000C94000060
 :100020000C9400000C9400000C9400000C94000050
-:100030000C9400000C9419010C9400000C94000026
-:100040000C9400000C9400000C94DF000C94EE0063
-:100050000C94FF000C9400000C9400000C94000021
+:100030000C9400000C942D010C9400000C94000012
+:100040000C9400000C9400000C94F3000C9402013A
+:100050000C9413010C9400000C9400000C9400000C
 :100060000C9400000C9400000FEF0DBF08E00EBFD1
-:1000700099278FEF0E94CB000FE107B998B97894C8
-:1000800002C0FFCFF89408B111E0012708B9A0E041
-:10009000B1E01091C10010691093C10010910301EB
-:1000A0001330E1F71091C1001F761093C1009093B7
-:1000B000C600909303010E947E0060FDE4CF61FDC5
-:1000C000E2CF62FD0E94950063FDDDCF64FDDBCFD2
-:1000D000A0E0B1E01091C10010621093C100109136
-:1000E00003011430E1F71091C10017791093C1009A
-:1000F0009093C60090930301419AC5CF00910001EF
-:100100000F7061E0002319F0660F0A95FBCF772787
-:10011000009101010F70702B009102010F70029588
-:10012000702B11F40C9443000895709300017093A8
-:10013000010170930201A0E0B1E01091C1001062D2
-:100140001093C100109103011430E1F71091C10028
-:1001500017791093C1009093C60090930301A0E01B
-:10016000B2E01091C10010691093C1001091030119
-:100170001717E1F71091C1001F761093C1009093FB
-:10018000C6009093030100E9009300010093010170
-:100190000093020108959093C6009093C00090933D
-:1001A000C1009093C20010E01093C50013E31093B8
-:1001B000C40016E01093C2009093030108951F93AA
-:1001C0005091C600152F107F103931F45D931091B6
-:1001D00003011395109303011F9118951F935D91CF
-:1001E0005093C600109103011395109303011091D1
-:1001F000C1001F7D18641093C1001F9118951F93B3
-:100200001091C100177B10621093C1001F911895C7
-:10021000909380009093810090938200909385004A
-:100220009093840090936F0090931001909311012C
-:1002300008953F93309110013395209112013217A8
-:1002400019F4332780931101309310013F911895D1
+:1000700099278FEF0E94DF000FE107B998B97894B4
+:1000800002C0FFCFF894409AA0E0B1E01091C10007
+:1000900010691093C100109103011330E1F7109122
+:1000A000C1001F761093C1009093C6009093030186
+:1000B0000E947B0060FDE7CF61FDE5CF62FD0E94FD
+:1000C000930063FDE0CF64FDDECFA0E0B1E01091CE
+:1000D000C10010621093C100109103011430E1F7C8
+:1000E0001091C10017791093C1009093C6009093AE
+:1000F0000301449AC8CF419A009100010F7061E05A
+:10010000002319F0660F0A95FBCF772700910101B4
+:100110000F70702B009102010F700295702B11F47B
+:100120000C9443000895429A70930001709301016A
+:1001300070930201A0E0B1E01091C1001062109331
+:10014000C100109103011430E1F71091C10017793B
+:100150001093C1009093C60090930301A0E0B2E019
+:100160001091C10010691093C10010910301072F75
+:10017000000F1017D1F71091C1001F761093C10026
+:100180009093C60090930301439AA0E0B2E0C0E0D0
+:10019000C395D2E0E0E0F2E00C911296188122962D
+:1001A0000F701F701295012B01937A95A9F700E942
+:1001B00000930001009301010093020108959093C0
+:1001C000C6009093C0009093C1009093C20010E0CD
+:1001D0001093C50013E31093C40016E01093C200FF
+:1001E0009093030108951F935091C600152F107F1F
+:1001F000103931F45D9310910301139510930301AD
+:100200001F9118951F935D915093C60010910301A3
+:100210001395109303011091C1001F7D1864109372
+:10022000C1001F9118951F931091C100177B106298
+:100230001093C1001F9118959093800090938100B6
+:1002400090938200909385009093840090936F0028
+:10025000909310019093110108953F9330911001F4
+:10026000339520911201321719F43327809311012D
+:08027000309310013F91189535
 :00000001FF

二进制
Source/ASM_Source/prog.o