PIC16F684 Skaitmeninis Termometras

M

me_guitarist

Guest
Ar Kažkas paversti šį kodą į Asemblerio kalba?
Negaliu suprasti C kalbą taip pls help.Thanks!

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

# define DIGIT2 RA1

# define DIGIT3 RA2

# define APIE 0

# define OFF 1/ *

RA5 - segmentas yra

RC5 - Segmentas b

RC4 - Segmentas c

RC3 - Segmentas d

RC2 - segmentas E

RC1 - Segmentas f

RC0 - Segmentas gRA4 - termistoriai

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

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

0b0000001 / / Digit nulis

0b1001111 / / Digit Vienas

0b0010010 / / Digit Du

0b0000110 / / Digit Trys

0b1001100 / / Digit Keturi

0b0100100 / / Digit Penki

0b0100000 / / Digit Šeši

0b0001111 / / Digit Septyni

0b0000000 / / Digit Aštuoni

0b0000100) / / Digit Devyniint temperatūros, TempDigit, DisplayPos, D1, j;

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

main ()

(

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

PORTC = 0;

TRISA = 0b010000 / / Visos Bits Porta yra išvaduose, išskyrus RA4

TRISC = 0; / / Visos Bits of PORTC yra išvaduoseCMCON0 = 7 / / Išjungti komponentow

Ansel = 1 <<4 / / RA4 yra ADC įvedimas

ADCON0 = 0b00001101 / / kairieji pateisinti, naudokite VDD, Channel 4 (AN3) Negalima paleisti, Įjungti

ADCON1 = 0b00010000 / / paleisti oscillatr kaip 8 x prescalarDisplayPos = 0;

j = 0;

Temperatūra = 0;

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

(

/////////// DISPLAY Readout ///////////DIGIT1 = off;

DIGIT2 = off;

DIGIT3 = off;jei (DisplayPos == 0) / / Šviesos 1. segmentas

(

TempDigit = temperatūra% 10 / / Just get "1"-os vietos

RA5 = LEDDigit [TempDigit]>> 6 / / Įjungti skaitmenų

PORTC = LEDDigit [TempDigit];

DIGIT3 = ON;

už (D1 = 0; D1 <414; D1 ); / / Delay for 7ms) else if (DisplayPos == 1) / / Šviesos 2. segmentas

(

TempDigit = temperatūra% 100 / / Just get "10"-os vietos (nurengti "100" s tikslumu)

TempDigit = TempDigit / 10 / / ir konvertuoti į "1"-os vietos

RA5 = LEDDigit [TempDigit]>> 6 / / Įjungti skaitmenų

PORTC = LEDDigit [TempDigit];

DIGIT2 = ON;

už (D1 = 0; D1 <400; D1 ); / / Delay for 7ms

) else / / Šviesa 3. segmentas

(

TempDigit = temperatūra / 100 / / Just get "100" s vietos

RA5 = LEDDigit [TempDigit]>> 6 / / Įjungti skaitmenų

PORTC = LEDDigit [TempDigit];

DIGIT1 = ON;

už (D1 = 0; D1 <400; D1 ); / / Delay for 7ms

)DisplayPos = (DisplayPos 1)% 3; / / Kitas segmentasj ;

if (j == 50) / / laikas atnaujinti temp?

(

j = 0;switch (ADCState)

(

case 0: / / Pradėti ADC operacija

GODONE = 1;

ADCState = 1;

break;

case 1:

ADCState = 0;

Temperatūra = ADRESH - 82;

break;

)

)

)

)
 

Welcome to EDABoard.com

Sponsor

Back
Top