Advertisement
Guest User

Untitled

a guest
Aug 13th, 2015
234
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.33 KB | None | 0 0
  1. #include <p18f4550.h>
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4. #include <usart.h>
  5. #include <string.h>
  6.  
  7. /*-------------------------------------
  8. * Bits de configuração do PIC18F4550
  9. *--------------------------------------*/
  10. // Oscilador e outras definicoes de registradores
  11. #pragma config FOSC = HS // (8 MHz)
  12. #pragma config IESO = OFF
  13. #pragma config PWRT = OFF
  14. #pragma config BORV = 3
  15. #pragma config WDT = OFF
  16. #pragma config WDTPS = 32768
  17. #pragma config MCLRE = OFF
  18. #pragma config LPT1OSC = OFF
  19. #pragma config PBADEN = OFF
  20. #pragma config STVREN = ON
  21. #pragma config LVP = OFF
  22.  
  23. //Variáveis globais
  24. int pi,tam;
  25. char *cv;
  26. char escolha[1];
  27. char fim[3];
  28. int vetor[]= {95, 180, 34, 119, 11, 123, 62, 64};
  29.  
  30. int a[]= {95, 180, 34, 119, 11, 123, 62, 64},b[9];// vetores auxuliares
  31.  
  32. int d[9];
  33. /*Configura e habilita a comunicação serial*/
  34. void inicializarSerial()
  35. {
  36. OpenUSART( USART_TX_INT_ON &
  37. USART_RX_INT_ON &
  38. USART_ASYNCH_MODE &
  39. USART_EIGHT_BIT &
  40. USART_CONT_RX &
  41. USART_BRGH_HIGH,51);
  42. //putrsUSART("HELLO! ");
  43. }
  44.  
  45. void imprime(){
  46. int j;
  47. for(j=0;j<9;j++){
  48. itoa(a[j],cv);
  49. putsUSART(cv);
  50. putrsUSART(" ");
  51.  
  52. }
  53. putrsUSART("| ");
  54. //putrsUSART("\0");
  55. // getsUSART(inputstr,5);
  56. //getsUSART( inputstr, 5 );
  57. //putsUSART(inputstr);
  58. }
  59.  
  60. void scan(int tam, int pi){
  61.  
  62. int i,j, na = tam;
  63. int disk=pi; //loc da posição inicial
  64. int temp,max;
  65. int dloc=0; //loc do acesso no array
  66.  
  67. for(i=0;i<na;i++){
  68. d[i]=vetor[i];
  69. }
  70.  
  71. d[na]=disk;
  72. na=na+1;
  73.  
  74. for(i=0;i<na;i++){ // Ordenação das entradas
  75.  
  76. for(j=i;j<na;j++){
  77. if(d[i]>d[j]){
  78. temp=d[i];
  79. d[i]=d[j];
  80. d[j]=temp;
  81. }
  82. }
  83. }
  84.  
  85. max=d[na];
  86.  
  87. for(i=0;i<na;i++){ // acha a localização da posição inicial no array
  88. if(disk==d[i]) { dloc=i; break; }
  89. }
  90.  
  91. for(i=dloc;i>=0;i--){
  92. itoa(d[i],cv);
  93. putsUSART(cv);
  94. putrsUSART(" ");
  95. }
  96.  
  97. for(i=dloc+1;i<na;i++){
  98. itoa(d[i],cv);
  99. putsUSART(cv);
  100. putrsUSART(" ");
  101. }
  102. putrsUSART("| ");
  103. }
  104.  
  105. void ssf(int tam, int pi){
  106.  
  107. int deslocamento=0,n=tam,temp=0,menorDesl=0;
  108. int k=0,x=0,t=0,i=0,j=0; //variaveis auxiliares
  109.  
  110. a[0]=pi;// posição 0 do vetor recebe posição inicial
  111.  
  112. //passa vetor de entrada para vetor auxiliar, assim o vetor original não é modificado
  113. for(i=1;i<=n;i++){
  114. a[i]=vetor[i-1];
  115. }
  116.  
  117. b[k++]=a[0];
  118.  
  119. // organiza o vetor comparando a menor distancia entre a posição i e j
  120. // de acordo com que as posições são encontradas os numeros vão sendo armazenados no vetor b
  121. for(i=0;i<n;i++){
  122. menorDesl=10000;
  123. for(j=i+1;j<=n;j++){
  124. if(a[i]>a[j])
  125. deslocamento=a[i]-a[j];
  126. else
  127. deslocamento=a[j]-a[i];
  128. if(deslocamento<menorDesl){
  129. menorDesl=deslocamento;
  130. x=j;
  131. }
  132. }
  133. t+=menorDesl;
  134. temp=a[i+1];
  135. a[i+1]=a[x];
  136. a[x]=temp;
  137. b[k++]=a[i+1];
  138. }
  139.  
  140. //imprime vetor saida
  141. imprime();
  142. }
  143.  
  144. void main() {
  145. inicializarSerial();
  146. pi=35;
  147. tam=8;
  148.  
  149. putrsUSART("Escolha o metodo:\n");
  150. putrsUSART("1-SSF 2-SCAN\n");
  151.  
  152. getsUSART( escolha, 1 );
  153.  
  154. if(escolha[0]=='1')
  155. scan(tam,pi);
  156.  
  157. if(escolha[0]=='2')
  158. ssf(tam, pi);
  159.  
  160. getsUSART( fim, 2 );
  161. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement