📄 comparators.c
字号:
/*A sample project file to be used with HI-TIDE, to demonstrate the functionality of the microcontroller's comparators module.*/
/*Refer to comparators.txt for additional information*/
#include <pic18.h>
#include "comparators.h"
#include <stdio.h>
void init(void);
void putch(unsigned char);
volatile bit UPDATE_REQUIRED ; /* Used to indicate when to refresh output data */
void main(void)
{
init();
while(1)
{
RB0=C1OUT; /*C1OUT and C2OUT bits CMCON of are wired to RED LEDs*/
RB1=C2OUT;
if (UPDATE_REQUIRED) /*Display current coparators' settings*/
{
printf("\n COMPARATORS MODE\n----------------\n");
switch (CMCON&07)
{
case 0 :{ printf("Comparators Reset \n");break;}
case 1 :{ printf("One Independent Comparator with Output\n");break;}
case 2 :{ printf("Two Independent Comparators \n"); break;}
case 3 :{ printf("Two Independent Comparators with Outputs \n");break;}
case 4 :{ printf("Two Common Reference Comparators\n");break;}
case 5 :{ printf("Two Common Reference Comparators with Outputs\n"); break;}
case 6 :{ printf("Four Inputs Multiplexed to Two Comparators\n");break;}
case 7 :{ printf("Comparators Off \n");break;}
default : printf("\n Illegal MODE \n");
}
if ((CMCON&07)==6)
{
printf("CIS: Comparator Input Switch Status\n----------------\n");
if (CIS)
{
printf ("C1 VIN connects to RF5/AN10\n");
printf ("C2 VIN connects to RF3/AN8\n");
}
else
{
printf ("C1 VIN connects to RF6/AN11\n");
printf ("C2 VIN connects to RF4/AN9\n");
}
}
printf("----------------\n");
if (C2INV) printf("C2 output inverted\n");
if (C1INV) printf("C1 output inverted\n");
printf("----------------\n");
printf("C1 output is : %d\n",C1OUT);
printf("C2 output is : %d\n",C2OUT);
printf("----------------\n");
if (CVREN)
{
printf("Voltage reference is : %d mV dc\n",((CVRCON&0x0F)*1000/24)*5);
}
UPDATE_REQUIRED=0;
}
}
}
void init(void)
{
CMCON=0; /*Initialise comparators*/
CMIF=0;
CMIE=1;
CVRCON=0;
TRISE=0x0F; /* 4-bit LED connected to PORTE reflects current mode of comparators*/
TRISC=0x8F; /*4-bit DIP connected to PORTC is used to set the Voltage reference value*/
TRISF=0x78; /*Configure IO for comparators*/
TRISD=0xFF; /* 6-bit DIP switch connected to PORTD controls CMCON*/
TRISB=0x10; /* Push button is connected to RB4 */
TXEN=1; /* enable serial port transmissions */
SPEN=1;
TXIE=0; /* not interrupt driven */
ADCON1=0x0F; /*configure all ADC pins as digital*/
RBIE=1; /* enable PORTB interrupts to*/
GIEH=1; /* allow interrupts from PUSH BUTTONS */
GIEL=1;
UPDATE_REQUIRED=1;
}
void putch(unsigned char c)
{
TXREG=c; /* transmit a character to Serial IO */
while(!TXIF)continue;
TXIF=0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -