Alle Pastes #992517 Raw Bearbeiten

Anonymous

öffentlich c v1 · unveränderlich
#992517 ·veröffentlicht 2008-04-21 21:38 UTC
gerenderter Paste-Inhalt
//#include <pic16f877.h>#include "pic14.h"#include "elso.h"//#include "segment.h"  // seven segment display  //     a  //  f     b  //     g  //  e     c  //     d#define segment_a   RC6#define segment_b   RC4#define segment_c   RD3#define segment_d   RD2#define segment_e   RD4#define segment_f   RC7#define segment_g   RD5#define segment_dot RC5/* Configuration bits: adapt to your setup and needs */typedef unsigned int word;word at 0x2007 CONFIG = _HS_OSC & _WDT_OFF & _PWRTE_ON & _BODEN_ON & _LVP_OFF & _CPD_OFF & _DEBUG_OFF & _CP_OFF;//_WRT_OFF &static void isr(void) interrupt 0 {    toggle_segment(1);    if (ADIF) { // A/D completed        on_digit_dot();        ADIF = 0;    }}void init_board(void) {  TRISD0 = 0; // configure PORTD0 for output (blinking led)  TRISD7 = 0;  TRISD6 = 0;  TRISD5 = 0;  TRISD4 = 0;  TRISD3 = 0;  TRISD2 = 0;  TRISC7 = 0;  TRISC6 = 0;  TRISC5 = 0;  TRISC4 = 0;  TRISA = BIN(11111111); //all input AN0 peidg analog  //disable all interrupts  PIE1 = BIN(00000000);       // All peripheral interrupts initially disabled  INTCON = BIN(00000000);     // Interrupts disabled  PIR1 = 0;                   // Clear peripheral interrupt flags}// ------------------------------------------------// a simple delay functionvoid delay_ms(long ms){    long i;    while (ms--)        for (i=0; i < 330; i++)            ;}void on_digit_zero(void) {        segment_a   = 1;        segment_b   = 1;        segment_c   = 1;        segment_d   = 1;        segment_e   = 1;        segment_f   = 1;        segment_g   = 0;        segment_dot = 0;}void on_digit_one(void) {        segment_a   = 1;        segment_b   = 1;        segment_c   = 0;        segment_d   = 0;        segment_e   = 0;        segment_f   = 0;        segment_g   = 0;        segment_dot = 0;}void on_digit_two(void) {        segment_a   = 1;        segment_b   = 0;        segment_c   = 1;        segment_d   = 1;        segment_e   = 0;        segment_f   = 1;        segment_g   = 1;        segment_dot = 0;}void on_digit_three(void) {        segment_a   = 1;        segment_b   = 1;        segment_c   = 1;        segment_d   = 0;        segment_e   = 0;        segment_f   = 1;        segment_g   = 1;        segment_dot = 0;}void on_digit_four(void) {        segment_a   = 1;        segment_b   = 1;        segment_c   = 0;        segment_d   = 0;        segment_e   = 1;        segment_f   = 0;        segment_g   = 1;        segment_dot = 0;}void on_digit_five(void) {        segment_a   = 0;        segment_b   = 1;        segment_c   = 1;        segment_d   = 0;        segment_e   = 1;        segment_f   = 1;        segment_g   = 1;        segment_dot = 0;}void on_digit_six(void) {        segment_a   = 0;        segment_b   = 1;        segment_c   = 1;        segment_d   = 1;        segment_e   = 1;        segment_f   = 1;        segment_g   = 1;        segment_dot = 0;}void on_digit_seven(void) {        segment_a   = 1;        segment_b   = 1;        segment_c   = 0;        segment_d   = 0;        segment_e   = 0;        segment_f   = 1;        segment_g   = 0;        segment_dot = 0;}void on_digit_eight(void) {        segment_a   = 1;        segment_b   = 1;        segment_c   = 1;        segment_d   = 1;        segment_e   = 1;        segment_f   = 1;        segment_g   = 1;        segment_dot = 0;}void on_digit_nine(void) {        segment_a   = 1;        segment_b   = 1;        segment_c   = 1;        segment_d   = 0;        segment_e   = 1;        segment_f   = 1;        segment_g   = 1;        segment_dot = 0;}void on_digit_dot(void) {        segment_a   = 0;        segment_b   = 0;        segment_c   = 0;        segment_d   = 0;        segment_e   = 0;        segment_f   = 0;        segment_g   = 0;        segment_dot = 1;}void clear_digit(void) {        segment_a   = 0;        segment_b   = 0;        segment_c   = 0;        segment_d   = 0;        segment_e   = 0;        segment_f   = 0;        segment_g   = 0;        segment_dot = 0;}// turn one segment onvoid toggle_segment(int on) {    if (on) {        segment_a   = 0;        segment_b   = 1;        segment_c   = 1;        segment_d   = 1;        segment_e   = 1;        segment_f   = 1;        segment_g   = 1;        segment_dot = 1;    } else {        segment_a = 0;        segment_b = 0;        segment_c = 0;        segment_d = 0;        segment_e = 0;        segment_f = 0;        segment_g = 0;        segment_dot = 0;    }}void count() {        on_digit_zero();        delay_ms(250);        on_digit_one();        delay_ms(250);        on_digit_two();        delay_ms(250);        on_digit_three();        delay_ms(250);        on_digit_four();        delay_ms(250);        on_digit_five();        delay_ms(250);        on_digit_six();        delay_ms(250);        on_digit_seven();        delay_ms(250);        on_digit_eight();        delay_ms(250);        on_digit_nine();        delay_ms(250);        clear_digit();        delay_ms(250);}void main() {    // sit in an endless loop blinking the led    init_board();    for (;;)    {        INTCON = BIN(11000000); //GIE, PEIE        PIE1   = BIN(01000000); //ADIE = 1        ADCON0 = BIN(10000001); //Tosc/32, ADON        ADCON1 = BIN(00001110); //left justified,an0        ADIF = 0;        delay_ms(1); //wait the required aquisition time        ADON = 1; //start AD        count();    }}