PIC16F684 Digital Thermometer

M

me_guitarist

Guest
Kan iemand deze code omzetten naar assembleertaal?
Ik kan niet begrijpen van de C taal dus pls help.Thanks!

Code:# include <pic.h># define DIGIT1 RA0

# define DIGIT2 RA1

# define DIGIT3 RA2

# define OP 0

# define OFF 1/ *

RA5 - Gesegmenteerde een

RC5 - het B-segment

RC4 - C-segment

RC3 - Gesegmenteerde d

RC2 - Gesegmenteerde e

RC1 - Gesegmenteerde f

RC0 - Gesegmenteerde gRA4 - Thermistor

* /__CONFIG (INTIO & WDTDIS & PWRTEN & MCLRDIS & opheffen \

& Opheffen & BORDIS & IESODIS & FCMDIS);const char LEDDigit [10] = (

0b0000001, / / Digit Zero

0b1001111, / / Digit Een

0b0010010, / / Digit Twee

0b0000110, / / Digit Drie

0b1001100, / / Digit Vier

0b0100100, / / Digit Vijf

0b0100000, / / Digit Zes

0b0001111, / / Digit Zeven

0b0000000, / / Digit Acht

0b0000100); / / Digit Negenint Temperatuur, TempDigit, DisplayPos, D1, j;

int ADCState;int i, j, d, t, temp;

main ()

(

/////////// INIT ////////////PORTA = 0;

PORTC = 0;

TRISA = 0b010000; / / Alle stukjes PORTA zijn Outputs behalve RA4

TRISC = 0; / / Alle stukjes PORTC zijn OutputsCMCON0 = 7 / / Zet comparatoren

Ansel = 1 <<4 / / RA4 is ADC input

ADCON0 = 0b00001101 / / Links rechtvaardigen, Gebruik Vdd, Channel 4 (AN3), Don't start, Schakel

ADCON1 = 0b00010000; / / run oscillatr als 8 x prescalarDisplayPos = 0;

j = 0;

Temperatuur = 0;

ADCState = 0;/ / / / MAIN LOOP / / / /while (1)

(

/////////// DISPLAY afleestoestand ///////////DIGIT1 = UIT;

DIGIT2 = UIT;

DIGIT3 = UIT;if (DisplayPos == 0) / / Lichte 1e segment

(

TempDigit = Temperatuur% 10 / / Just get "1" s plaats

RA5 = LEDDigit [TempDigit]>> 6 / / Zet de cijfers

PORTC = LEDDigit [TempDigit];

DIGIT3 = ON;

voor (D1 = 0; D1 <414; D1 ); / / Delay voor 7ms) anders als (DisplayPos == 1) / / Lichte 2e segment

(

TempDigit = Temperatuur% 100 / / Just get "10" s plaats (strip off "100" s plaats)

TempDigit = TempDigit / 10 / / en zet in op "1" s plaats

RA5 = LEDDigit [TempDigit]>> 6 / / Zet de cijfers

PORTC = LEDDigit [TempDigit];

DIGIT2 = ON;

voor (D1 = 0; D1 <400; D1 ); / / Delay voor 7ms

) else / / Lichte 3e segment

(

TempDigit = Temperatuur / 100 / / Just get "100" s plaats

RA5 = LEDDigit [TempDigit]>> 6 / / Zet de cijfers

PORTC = LEDDigit [TempDigit];

DIGIT1 = ON;

voor (D1 = 0; D1 <400; D1 ); / / Delay voor 7ms

)DisplayPos = (DisplayPos 1)% 3 / / Volgende segmentj ;

if (j == 50) / / Time to update temp?

(

j = 0;schakelaar (ADCState)

(

geval 0: / / Start ADC operatie

GODONE = 1;

ADCState = 1;

break;

Geval 1:

ADCState = 0;

Temperatuur = ADRESH - 82;

break;

)

)

)

)
 

Welcome to EDABoard.com

Sponsor

Back
Top