%INTELHEX(onda) %Escreve o vector 'onda' para um ficheiro em formato INTEL-HEX. %Os elementos de 'onda' te^m de estar compreendidos entre 0 e 255. function intelhex(onda) NCOLUNAS=68; if ((min(onda)<0) | (max(onda)>255)) error('O vector contem valores inferiores a 0 ou superiores a 255'); end NOME=input('Nome do ficheiro INTEL-HEX a gravar ?','s'); FID = fopen(NOME,'w'); tamanho=2*length(onda); indice=1; for i=1:ceil(tamanho/NCOLUNAS) checksum=0; if i==ceil(tamanho/NCOLUNAS) nbytes=rem(tamanho,NCOLUNAS)/2; else nbytes=NCOLUNAS/2; end endereco = (i-1)*NCOLUNAS/2; checksum = checksum + nbytes + floor(endereco/256) + rem (endereco,256); fprintf(FID,':'); fprintf(FID,'%2.2X',nbytes); fprintf(FID,'%4.4X',endereco); fprintf(FID,'00'); for j=1:nbytes fprintf(FID,'%2.2X',onda(indice)); checksum = checksum + onda(indice); indice=indice+1; end fprintf(FID,'%2.2X\r\n', rem(256-rem(checksum,256),256)); end fprintf(FID,':00000001FF\n'); fclose(FID); % FIM intelhex.m