Advertisement
HanNhuThien

code #2

Mar 3rd, 2016
126
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.25 KB | None | 0 0
  1.  
  2. #include <xc.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5.  
  6. #define _XTAL_FREQ 1000000
  7.  
  8. #pragma config FOSC = XT // Oscillator Selection bits (HS oscillator)
  9. #pragma config WDTE = OFF // Watchdog Timer Enable bit (WDT disabled)
  10. #pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)
  11. #pragma config BOREN = OFF // Brown-out Reset Enable bit (BOR disabled)
  12. #pragma config LVP = OFF // Low-Voltage (Single-Supply) In-Circuit Serial Programming Enable bit (RB3 is digital I/O, HV on MCLR must be used for programming)
  13. #pragma config CPD = OFF // Data EEPROM Memory Code Protection bit (Data EEPROM code protection off)
  14. #pragma config WRT = OFF // Flash Program Memory Write Enable bits (Write protection off; all program memory may be written to by EECON control)
  15. #pragma config CP = OFF // Flash Program Memory Code Protection bit (Code protection off)
  16.  
  17. unsigned int volume, value, voltage;
  18. int i, x;
  19. int mask;
  20. unsigned long ADCvalue= 0, f;
  21.  
  22. const unsigned char DIGIT[10] = {0X3F,0X06,0X5B,0X4F,0X66,0X6D,0X7D,0X07,0X7F,0X6F};
  23.  
  24. void ADCinit(void){
  25.     ADCS2= ADCS1= 0; ADCS0= 1; //Set Fosc/8
  26.     ADFM= 1; //right justified
  27.     CHS2= CHS1= CHS0= 0; // Choose AN0
  28.     PCFG3= PCFG2= PCFG1= 1; PCFG0= 0;    
  29. }
  30.        
  31. unsigned int atod(void){
  32.     ADON= 1; //A to D on
  33.     GO= 1;
  34.     __delay_ms(1);
  35.     while (GO);
  36.     return (int) ADRESH* 256 + ADRESL; // Dich 8 bit
  37. }
  38.  
  39.  shift_out(){
  40.      int numero;
  41.     value= DIGIT[numero];
  42.     mask= 1;
  43.     RC3= 0; //Set ST_CP= 0 , open latch
  44.     RC0= 0; // Set SH_CP=0 , enable to write to shift register
  45.    
  46.     for(i=0; i< 7; i++){
  47.         if (value & mask)
  48.          RC1= 1; //DS= 1;
  49.       else  
  50.          RC1=0; //DS= 0;
  51.    
  52.     RC0= 1;
  53.     __delay_us(5);
  54.     RC0= 0; // Next bit
  55.     __delay_us (5);
  56.    
  57.     mask = mask << 1;
  58.     }
  59.     RC3= 1; // Shift out to Qn gate
  60.     __delay_us(125);
  61.  
  62. }
  63.  
  64. void main (){
  65.     TRISA= 0xff;
  66.     TRISC= 0x00;
  67.     TRISD= 0x00;
  68.     ADCinit ();
  69.     unsigned  ones,tens=0;
  70. while(1)
  71. {
  72. __delay_ms(1);  
  73. ADCvalue = atod();
  74. voltage = ADCvalue *5000 /1023;
  75. f = voltage / 10 - 273;
  76. ones= f%10;
  77. tens= (f/10)%10;
  78.  
  79. shift_out();
  80.  
  81.  
  82. PORTC = DIGIT[tens];
  83. RD6= 0;
  84. __delay_ms(1);
  85. RD6=1 ;
  86.  
  87.  
  88. PORTC = DIGIT[ones];
  89. RD7= 0;
  90. __delay_ms(1);
  91. RD7= 1;
  92. }
  93. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement