C
ceibawx
Guest
atimti surenkant kodą pic16f628a
Man reikia atimti tris kartus surinkimas kodas pic16f628a.Parašiau kvailas kodas, jis yra per ilgas.ir man įdomu, ar galiu naudoti kilpą daryti.
1) duomenys yra saugomi 0x40 ~ 0x51.The duomenys iš 8channels, kiekvienas kanalas 12bits.taip du kanalus užima trys baitai atmintyje.Pavyzdžiui kanalas 1 ir kanalas 2 okupuoti 0x40, 0x41, 0x42.
2) kanalas 2 - channel 8;
Channel 4 - channel 6;
Channel 3 - Channel 7;
Pasirinkti šią grupę, nes manau, channel2 turi tokią pačią struktūrą channel8.lengviau atimti nei channel2-channel3.
3) prieš atimti, ANDLW yra naudojamas norint gauti keturi bitai nuo baitų užsiregistruoti.
4) pirmasis atimti mažesnį bitų, tada atimti didesnę bitų Sprendžiant pagal statusą, C mažesnį bitų reikšmė.
5) mažesnis bitai saugomi Pirma atminties registrą, tada aukštos bitai saugomi pastarosios vietos atmintyje.Pavyzdžiui, vienas atimties rezultatas, didesnis bitai saugomi 0x60, o mažesnės bitai saugomi 0x61.
taigi visi atimties rezultatas yra saugomi 0x60 0x61 0x62 0x63 0x64 0x65.Anybody can help me?Kodas
Kodas
list P = 16f628a
# include <p16f628a.inc>ByteCounter kongresas 0x39goto PagrindinisAtsakingas komitetas:
BCF STATUS, RP0, banko 0
BCF STATUS, RP1
MOVLW 0x07
MOVWF CMCONBSF STATUSAS, RP0; 1 bankas
BCF TRISB, 2; produkcija
; UART nustatymas
MOVLW 0x15
MOVWF SPBRGBCF TXSTA, TX9
BSF TXSTA, TXEN
BCF TXSTA, SYNC
BSF TXSTA, BRGHBCF STATUS, RP0, banko 0
BSF RCSTA, SPEN
BCF RCSTA, RX9
BSF RCSTA, CRENPrisiminti:
f> W
MOVLW 0x31
MOVWF 0x40
MOVLW 0x32
MOVWF 0x41, 0x50 palyginimui
MOVLW 0x33
MOVWF 0x42MOVLW 0x34
MOVWF 0x43, 0x51 palyginimui
MOVLW 0x48
MOVWF 0x44
MOVLW 0x47
MOVWF 0x45, 0x52 palyginimuiMOVLW 0x46
MOVWF 0x46
MOVLW 0x45
MOVWF 0x47, 0x53 palyginimui
MOVLW 0x44
MOVWF 0x48MOVLW 0x43
MOVWF 0x49
MOVLW 0x42
MOVWF 0x50
MOVLW 0x41
MOVWF 0x51
;******* Atimtis *************
BCF STATUS, RP0; bank0
;********** pirmojo atimtis *************
Ch2_8:
;**** gauti 5-8bits apie 0x41 0x50 ******
MOVLW 0x0F
ANDWF 0x41, 0
MOVWF 0x6A, 0x41 "adresas
MOVLW 0x0F
ANDWF 0x50, 0
MOVWF 0x6B, 0x50 "adresas
;*******( 0x42) - (0x51) įrašyti į 0x61 ******
BCF STATUS, C
MOVF 0x51, 0
SUBWF 0x42, 0
MOVWF 0x61;
;******* atimti pagal C vertė *****
BTFSS STATUSAS, C
GOTO Ch28_value0, C = 0
BCF STATUS, C, C = 1
; (0x6A) - (0x6B) į 0x60
MOVF 0x6B, 0
SUBWF 0x6A, 0
MOVWF 0x60;
Goto Ch4_6Ch28_value0:; c = 0, (0x6A) -1 - (0x6B) į 0x60
BCF STATUS, C
MOVF 0x6B, 0
SUBWF 0x6A, 0
MOVWF 0x60;
; -1 Patikrinti C?
MOVLW 0x01;
SUBWF 0x60, 1
Goto Ch4_6
;********* antra *****************************
Ch4_6:
MOVLW 0x0F
ANDWF 0x44, 0
MOVWF 0x6C; 0x44 'adresas
MOVLW 0x0F
ANDWF 0x47, 0
MOVWF 0x6D; 0x47 'adresas
; (0x45) - (0x48) į 0x63
BCF STATUS, C
MOVF 0x48, 0
SUBWF 0x45, 0
MOVWF 0x63;BTFSS STATUSAS, C
GOTO Ch46_value0, C = 0
BCF STATUS, C, C = 1
; (0x6C) - (0x6D) į 0x62
MOVF 0x6D, 0
SUBWF 0x6C, 0
MOVWF 0x62;
Goto Ch3_7Ch46_value0:; c = 0, (0x6C) -1 - (0x6D) į 0x63
BCF STATUS, C
MOVF 0x6D, 0
SUBWF 0x6C, 0
MOVWF 0x62;
; -1 Patikrinti C? C ??,??????
MOVLW 0x01;
SUBWF 0x62, 1
Goto Ch3_7
;************* trečiosios *******************************
Ch3_7:
movlw 0xF0;
andwf 0x44, 0
movwf 0x6E, 44''į 6E
movlw 0xF0;
andwf 0x50, 0
movwf 0x6F; 50''Į 6F
;***** atimti ************
BCF STATUS, C; (6E) - (6f) į (65)
MOVF 0x6F, 0
SUBWF 0x6E, 0
MOVWF 0x65;btfss STATUSAS, C
GOTO Ch37_value0, C = 0
, C = 1 (43) - (49) to (64)
bcf STATUS, C
movf 0x49, 0
subwf 0x43, 0
movwf 0x64;
Goto StotelėCh37_value0:; C = 0 (43) -1 - (49) to (64)
bcf STATUS, C
movf 0x49, 0
subwf 0x43, 0
movwf 0x64;
; -1
movlw 0x01;
subwf 0x64, 1; 60 61 62 63 64 65
GOTO Stotelė
Stotelė:
GOTO StotelėPABAIGA
Man reikia atimti tris kartus surinkimas kodas pic16f628a.Parašiau kvailas kodas, jis yra per ilgas.ir man įdomu, ar galiu naudoti kilpą daryti.
1) duomenys yra saugomi 0x40 ~ 0x51.The duomenys iš 8channels, kiekvienas kanalas 12bits.taip du kanalus užima trys baitai atmintyje.Pavyzdžiui kanalas 1 ir kanalas 2 okupuoti 0x40, 0x41, 0x42.
2) kanalas 2 - channel 8;
Channel 4 - channel 6;
Channel 3 - Channel 7;
Pasirinkti šią grupę, nes manau, channel2 turi tokią pačią struktūrą channel8.lengviau atimti nei channel2-channel3.
3) prieš atimti, ANDLW yra naudojamas norint gauti keturi bitai nuo baitų užsiregistruoti.
4) pirmasis atimti mažesnį bitų, tada atimti didesnę bitų Sprendžiant pagal statusą, C mažesnį bitų reikšmė.
5) mažesnis bitai saugomi Pirma atminties registrą, tada aukštos bitai saugomi pastarosios vietos atmintyje.Pavyzdžiui, vienas atimties rezultatas, didesnis bitai saugomi 0x60, o mažesnės bitai saugomi 0x61.
taigi visi atimties rezultatas yra saugomi 0x60 0x61 0x62 0x63 0x64 0x65.Anybody can help me?Kodas
Kodas
list P = 16f628a
# include <p16f628a.inc>ByteCounter kongresas 0x39goto PagrindinisAtsakingas komitetas:
BCF STATUS, RP0, banko 0
BCF STATUS, RP1
MOVLW 0x07
MOVWF CMCONBSF STATUSAS, RP0; 1 bankas
BCF TRISB, 2; produkcija
; UART nustatymas
MOVLW 0x15
MOVWF SPBRGBCF TXSTA, TX9
BSF TXSTA, TXEN
BCF TXSTA, SYNC
BSF TXSTA, BRGHBCF STATUS, RP0, banko 0
BSF RCSTA, SPEN
BCF RCSTA, RX9
BSF RCSTA, CRENPrisiminti:
f> W
MOVLW 0x31
MOVWF 0x40
MOVLW 0x32
MOVWF 0x41, 0x50 palyginimui
MOVLW 0x33
MOVWF 0x42MOVLW 0x34
MOVWF 0x43, 0x51 palyginimui
MOVLW 0x48
MOVWF 0x44
MOVLW 0x47
MOVWF 0x45, 0x52 palyginimuiMOVLW 0x46
MOVWF 0x46
MOVLW 0x45
MOVWF 0x47, 0x53 palyginimui
MOVLW 0x44
MOVWF 0x48MOVLW 0x43
MOVWF 0x49
MOVLW 0x42
MOVWF 0x50
MOVLW 0x41
MOVWF 0x51
;******* Atimtis *************
BCF STATUS, RP0; bank0
;********** pirmojo atimtis *************
Ch2_8:
;**** gauti 5-8bits apie 0x41 0x50 ******
MOVLW 0x0F
ANDWF 0x41, 0
MOVWF 0x6A, 0x41 "adresas
MOVLW 0x0F
ANDWF 0x50, 0
MOVWF 0x6B, 0x50 "adresas
;*******( 0x42) - (0x51) įrašyti į 0x61 ******
BCF STATUS, C
MOVF 0x51, 0
SUBWF 0x42, 0
MOVWF 0x61;
;******* atimti pagal C vertė *****
BTFSS STATUSAS, C
GOTO Ch28_value0, C = 0
BCF STATUS, C, C = 1
; (0x6A) - (0x6B) į 0x60
MOVF 0x6B, 0
SUBWF 0x6A, 0
MOVWF 0x60;
Goto Ch4_6Ch28_value0:; c = 0, (0x6A) -1 - (0x6B) į 0x60
BCF STATUS, C
MOVF 0x6B, 0
SUBWF 0x6A, 0
MOVWF 0x60;
; -1 Patikrinti C?
MOVLW 0x01;
SUBWF 0x60, 1
Goto Ch4_6
;********* antra *****************************
Ch4_6:
MOVLW 0x0F
ANDWF 0x44, 0
MOVWF 0x6C; 0x44 'adresas
MOVLW 0x0F
ANDWF 0x47, 0
MOVWF 0x6D; 0x47 'adresas
; (0x45) - (0x48) į 0x63
BCF STATUS, C
MOVF 0x48, 0
SUBWF 0x45, 0
MOVWF 0x63;BTFSS STATUSAS, C
GOTO Ch46_value0, C = 0
BCF STATUS, C, C = 1
; (0x6C) - (0x6D) į 0x62
MOVF 0x6D, 0
SUBWF 0x6C, 0
MOVWF 0x62;
Goto Ch3_7Ch46_value0:; c = 0, (0x6C) -1 - (0x6D) į 0x63
BCF STATUS, C
MOVF 0x6D, 0
SUBWF 0x6C, 0
MOVWF 0x62;
; -1 Patikrinti C? C ??,??????
MOVLW 0x01;
SUBWF 0x62, 1
Goto Ch3_7
;************* trečiosios *******************************
Ch3_7:
movlw 0xF0;
andwf 0x44, 0
movwf 0x6E, 44''į 6E
movlw 0xF0;
andwf 0x50, 0
movwf 0x6F; 50''Į 6F
;***** atimti ************
BCF STATUS, C; (6E) - (6f) į (65)
MOVF 0x6F, 0
SUBWF 0x6E, 0
MOVWF 0x65;btfss STATUSAS, C
GOTO Ch37_value0, C = 0
, C = 1 (43) - (49) to (64)
bcf STATUS, C
movf 0x49, 0
subwf 0x43, 0
movwf 0x64;
Goto StotelėCh37_value0:; C = 0 (43) -1 - (49) to (64)
bcf STATUS, C
movf 0x49, 0
subwf 0x43, 0
movwf 0x64;
; -1
movlw 0x01;
subwf 0x64, 1; 60 61 62 63 64 65
GOTO Stotelė
Stotelė:
GOTO StotelėPABAIGA