Вот код, я не понимаю, как изменить его на 10-битный AD C.
я предполагаю, что это что-то вроде 16-битной строки и просто игнорирую последние 6, но Понятия не имею.
Если кто-то может посоветовать, как это изменить, отлично. Я действительно потерялся. Я кое-что читал об этом, но чем больше читаю, тем больше запутываюсь.
Вот расположение светодиодов
Любая другая необходимая информация, просто спросите
#include <xc.h>
/* Configuration Word */
#pragma config FOSC = INTOSCIO// Clock
#pragma config WDTE = OFF //
#pragma config PWRTE = OFF // Power-up Timer Enable bit (PWRT disabled)
#pragma config MCLRE = OFF // MCLR Pin Function Select bit (MCLR pin function is digital input, MCLR internally tied to VDD)
#pragma config CP = OFF // Code Protection bit (Program memory code protection is disabled)
#pragma config CPD = OFF // Data Code Protection bit (Data memory code protection is disabled)
#pragma config BOREN = OFF // Brown Out Detect (BOR disabled)
#pragma config IESO = OFF // Internal External Switchover bit (Internal External Switchover mode is disabled)
#pragma config FCMEN = OFF // Fail-Safe Clock Monitor Enabled bit (Fail-Safe Clock Monitor is disabled)
// CONFIG --- Configuration Word --- END
void PORTA_init(void);
void ADC_Disp(void);
void Delay_LED_On(void);
int ADC_Value = 0;
const char PORTA_Value[8] = {
0b010000, // D0
0b100000, // D1
0b010000, // D2
0b000100, // D3
0b100000, // D4
0b000100, // D5
0b000100, // D6
0b000010}; // D7
const char TRISA_Value[8] = {
0b001111, // D0
0b001111, // D1
0b101011, // D2
0b101011, // D3
0b011011, // D4
0b011011, // D5
0b111001, // D6
0b111001}; // D7
main()
{
PORTA_init();
ANSEL = 1; // Just RA0 is an Analog Input
TRISA0 = 1; // Corresponding TRIS bit is set as input
ADCON0 = 0b00000001; // Turn on the ADC
// Bit 7 - Left Justified Sample
// Bit 6 - Use VDD
// Bit 4:2 - Channel 0
// Bit 1 - Do not Start
// Bit 0 - Turn on ADC
ADCON1 = 0b00010000; // Select the Clock as Fosc/8
ADC_Disp();
GO_DONE = 1; // Start A/D Conversion
while(1 == 1) // Loop Forever
{
if (GO_DONE == 0) // Is A/D Conversion complete?
{ ADC_Disp(); // Display A/D Conversion Results
ADC_Value = ADRESH; // Get new A/D value
GO_DONE = 1; // Start the next A/D Conversion
}
else // A/D Conversion still in progress
ADC_Disp();
}
}
/******** END OF main ROUTINE ***************************/
void PORTA_init(void)
{
PORTA = 0; // All PORTA Pins are low
CMCON0 = 7; // Turn off Comparators
ANSEL = 0; // Turn off ADC
return;
}
/******** END OF PORTA_init ****************************/
/********************************************************
* Function: ADC_Disp
*
* Description: Displays the value of A/D Conversion on D0 - D7
*
* Notes:
*
*
*
* Returns: None
*
********************************************************/
void ADC_Disp(void)
{
int i;
for (i = 0; i < 8; i++ )
{ // Loop through Each of the 8 LEDS
Delay_LED_On(); // Allows time for individual LEDs to light
if ((ADC_Value & (1 << i)) == 0)
PORTA = 0;
else
PORTA = PORTA_Value[i];
TRISA = TRISA_Value[i];
} //
return;
}
/******** END OF ADC_Disp *************************/
void Delay_LED_On(void)
{
int j;
for (j = 0; j < 60; j++); // Display "On" Loop
return;
}
/******** END OF Delay_LED_On *************************/