I
intan
Guest
hei!
kan noen hjelpe meg til å konvertere denne koden til hex koden?
im bruker pic 16f876a og hitech c språk
i hv prøvd mange ganger, men fremdeles skrånende arbeid
takk på forhånd#
include <pic.h>
//=============== konfigurasjon ==============================
__CONFIG (0x3F32);
//=============== definere IO port =============================
# define LCD PORTC
# define RS RA2
# define E RA5
# define CHANNEL0 0b10000001 / / AN0
# define CHANNEL1 0b10001001 / / AN1
# define Fana RB4
# define fanB RB3
# define leda RB2
# define ledB RB1
//============== FUNCTION PTOTOTYPE =========================
void e_pulse (void);
void forsinkelse (unsigned kort i);
void send_char (unsigned char data);
void send_config (unsigned char data);
void lcd_goto (unsigned char data);
void lcd_clr (void);
void dis_num (unsigned lang data);
void økning (unsigned lang data);
void read_adc (void);
unsigned short read_temp (void);
//==================== MAIN =========================== =====
unsigned short resultat;
unsigned short temp, tempA, tempB;
void main (void)
(
ADRESH = 0; / / klart A / D resultat
ADRESL = 0; / / klart A / D resultat
/ / setting ADCON1 Registrer
ADCON1 = 0b11000101; / / A / D resultatet rett rettferdiggjøres,
/ /
Configure RA2 og RA5 som digital I / O
TRISA = 0b00011011; / /
configure Porta I/O- retning
TRISB = 0b00000000; / /
configure PORTB som utdata
TRISC = 0b00000000; / /
configure PORTC som utdata
Porta = 0;
PORTB = 0;
mens (1)
(
send_config (0b00000001); / / tømme displayet på LCD
send_config (0b00000010); / / LCD Returner til hjemmesiden
send_config (0b00000110); / / oppføring modus-markøren øke 1
send_config (0b00001100); / / diplay på markøren, og markøren blinker off
send_config (0b00111000); / / funksjon sett
lcd_goto (0); / / markøren starte fra begynnelsen
/ / vise tegn på LCD
send_char ( '');
send_char ( 'T');
send_char ( 'E');
send_char ( 'M');
send_char ( "P");
send_char ('.');
send_char ( 'A');
send_char ('=');
lcd_goto (20); / / markøren gå til 2dre linje av LCD
/ / vise tegn på LCD
send_char ( '');
send_char ( 'T');
send_char ( 'E');
send_char ( 'M');
send_char ( "P");
send_char ('.');
send_char ( 'B');
send_char ('=');
mens (1) / / uendelig løkke
(
/ / sensor A
ADCON0 = CHANNEL0; / / CHANNEL1 = 0b10001001
lcd_goto (
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Kjølig" border="0" />
;
read_adc ();
temp = read_temp ();
dis_num (temp/10);
send_char ('.');
dis_num (temp% 10);
send_char (0b11011111);
send_char ( 'C');
send_char ( '');
send_char ( '');
tempA = temp;
/ / sensor B
ADCON0 = CHANNEL1; / / CHANNEL0 = 0b10000001
lcd_goto (2
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Kjølig" border="0" />
;
read_adc ();
temp = read_temp ();
dis_num (temp/10);
send_char ('.');
dis_num (temp% 10);
send_char (0b11011111);
send_char ( 'C');
send_char ( '');
send_char ( '');
tempB = temp;
if ((tempA> 400) & & (tempB <500)) / / ********************************** *******
(/ / * LED A og Fan A aktiveres bare for *
leda = 1; / / * temperatur større enn 40'C *
ledB = 0; / / * og temperatur B mindre enn 50'C *
Fana = 1; / / *****************************************
fanB = 0;
)
else if ((tempB> 400) & & (tempA <500)) / / ********************************* ********
(/ / * LED B og Fan B aktiveres bare for *
leda = 0; / / * temperatur En mindre enn 40'C og *
ledB = 1; / / * temperatur B større enn 50'C *
Fana = 0; / / *****************************************
fanB = 1;
)
else if ((tempB> 400) & & (tempA> 500)) / / ********************************* ********************
(/ / * Alle LED A & LED B, Fan A & Fan B *
ledB = 1; / / * aktivert for temperatur større enn 40'C *
leda = 1; / / * og temperatur B større enn 50'C *
Fana = 1; / / ******************************************** *********
fanB = 1;
;
)
else if ((tempB <400) & & (tempA <500)) / / ********************************* ********************
(/ / * Alle LED A & LED B, Fan A & Fan B *
ledB = 0; / / * disactivated for temperatur Et mindre enn 40'C *
leda = 0; / / * og temperatur B mindre enn 50'C *
Fana = 0; / / ******************************************** *********
fanB = 0;
)
forsinkelse (2000);
)
)
)//================== subroutine LCD innstillingen ==========================
void send_config (unsigned char data)
(
RS = 0;
LCD = data;
forsinkelse (500);
e_pulse ();
)
void e_pulse (void)
(
E = 1;
forsinkelse (500);
E = 0;
forsinkelse (500);
)
void send_char (unsigned char data)
(
RS = 1;
LCD = data;
forsinkelse (500);
e_pulse ();
)void lcd_goto (unsigned char data)
(
if (data <16)
(
send_config (0x80 data);
)
ellers
(
data = data-20;
send_config (0xC0 data);
)
)void lcd_clr (void)
(
RS = 0;
send_config (0x01);
forsinkelse (600);
)void dis_num (unsigned lang data)
(
unsigned char hundred_thousand;
unsigned char ten_thousand;
unsigned char tusen;
unsigned char hundre;
unsigned char tiende;
hundred_thousand = data/100000;
data = data% 100000;
ten_thousand = data/10000;
data = data% 10000;
tusen = data / 1000;
data = data% 1000;
hundre = data / 100;
data = data% 100;
tiende = data / 10;
data = data% 10;
if (hundred_thousand> 0)
(
send_char (hundred_thousand 0x30); / / 0x30 lagt til ASCII-kode
send_char (ten_thousand 0x30);
send_char (tusen 0x30);
send_char (hundre 0x30);
send_char (tiende 0x30);
send_char (data 0x30);
)
else if (ten_thousand> 0)
(
send_char (ten_thousand 0x30); / / 0x30 lagt til ASCII-kode
send_char (tusen 0x30);
send_char (hundre 0x30);
send_char (tiende 0x30);
send_char (data 0x30);
)
else if (tusen> 0)
(
send_char (tusen 0x30); / / 0x30 lagt til ASCII-kode
send_char (hundre 0x30);
send_char (tiende 0x30);
send_char (data 0x30);
)
else if (hundre> 0)
(
send_char (hundre 0x30); / / 0x30 lagt til ASCII-kode
send_char (tiende 0x30);
send_char (data 0x30);
)
else if (tiende> 0)
(
send_char (tiende 0x30); / / 0x30 lagt til ASCII-kode
send_char (data 0x30);
)
else send_char (data 0x30); / / 0x30 lagt til ASCII-kode
)
void økning (unsigned lang data)
(
unsigned short j;
for (j = 10; j> 0; j -)
(Lcd_goto (32);
data = data 1;
dis_num (data);
forsinkelse (10000);
)
)
//================== subroutine ADC =========================
void read_adc (void)
(
unsigned short i;
unsigned long result_temp = 0;
for (i = 2000; i> 0; i-= 1) / / looping 2000 ganger for å få gjennomsnittlig verdi
(
ADGO = 1; / / ADGO er bit 2 av ADCON0 register
while (ADGO == 1); / / ADC starten ADGO = 0 etter ferdig ADC fremgang
result = ADRESH;
resultat = resultat <<8; / / skifte til venstre for 8 bit
resultat = resultat | ADRESL; / / 10 bit Resultatet fra ADC
result_temp = resultat;
)
result = result_temp/2000; / / får gjennomsnittlig verdi
)
unsigned short read_temp (void)
(
unsigned short temp;
temp = resultat;
return temp;
)
//================== subroutine FORSINKELSE ==========================
void forsinkelse (unsigned kort i)
(
for (; i> 0; i -);
)
kan noen hjelpe meg til å konvertere denne koden til hex koden?
im bruker pic 16f876a og hitech c språk
i hv prøvd mange ganger, men fremdeles skrånende arbeid
takk på forhånd#
include <pic.h>
//=============== konfigurasjon ==============================
__CONFIG (0x3F32);
//=============== definere IO port =============================
# define LCD PORTC
# define RS RA2
# define E RA5
# define CHANNEL0 0b10000001 / / AN0
# define CHANNEL1 0b10001001 / / AN1
# define Fana RB4
# define fanB RB3
# define leda RB2
# define ledB RB1
//============== FUNCTION PTOTOTYPE =========================
void e_pulse (void);
void forsinkelse (unsigned kort i);
void send_char (unsigned char data);
void send_config (unsigned char data);
void lcd_goto (unsigned char data);
void lcd_clr (void);
void dis_num (unsigned lang data);
void økning (unsigned lang data);
void read_adc (void);
unsigned short read_temp (void);
//==================== MAIN =========================== =====
unsigned short resultat;
unsigned short temp, tempA, tempB;
void main (void)
(
ADRESH = 0; / / klart A / D resultat
ADRESL = 0; / / klart A / D resultat
/ / setting ADCON1 Registrer
ADCON1 = 0b11000101; / / A / D resultatet rett rettferdiggjøres,
/ /
Configure RA2 og RA5 som digital I / O
TRISA = 0b00011011; / /
configure Porta I/O- retning
TRISB = 0b00000000; / /
configure PORTB som utdata
TRISC = 0b00000000; / /
configure PORTC som utdata
Porta = 0;
PORTB = 0;
mens (1)
(
send_config (0b00000001); / / tømme displayet på LCD
send_config (0b00000010); / / LCD Returner til hjemmesiden
send_config (0b00000110); / / oppføring modus-markøren øke 1
send_config (0b00001100); / / diplay på markøren, og markøren blinker off
send_config (0b00111000); / / funksjon sett
lcd_goto (0); / / markøren starte fra begynnelsen
/ / vise tegn på LCD
send_char ( '');
send_char ( 'T');
send_char ( 'E');
send_char ( 'M');
send_char ( "P");
send_char ('.');
send_char ( 'A');
send_char ('=');
lcd_goto (20); / / markøren gå til 2dre linje av LCD
/ / vise tegn på LCD
send_char ( '');
send_char ( 'T');
send_char ( 'E');
send_char ( 'M');
send_char ( "P");
send_char ('.');
send_char ( 'B');
send_char ('=');
mens (1) / / uendelig løkke
(
/ / sensor A
ADCON0 = CHANNEL0; / / CHANNEL1 = 0b10001001
lcd_goto (
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Kjølig" border="0" />
;
read_adc ();
temp = read_temp ();
dis_num (temp/10);
send_char ('.');
dis_num (temp% 10);
send_char (0b11011111);
send_char ( 'C');
send_char ( '');
send_char ( '');
tempA = temp;
/ / sensor B
ADCON0 = CHANNEL1; / / CHANNEL0 = 0b10000001
lcd_goto (2
<img src="http://www.edaboard.com/images/smiles/icon_cool.gif" alt="Kjølig" border="0" />
;
read_adc ();
temp = read_temp ();
dis_num (temp/10);
send_char ('.');
dis_num (temp% 10);
send_char (0b11011111);
send_char ( 'C');
send_char ( '');
send_char ( '');
tempB = temp;
if ((tempA> 400) & & (tempB <500)) / / ********************************** *******
(/ / * LED A og Fan A aktiveres bare for *
leda = 1; / / * temperatur større enn 40'C *
ledB = 0; / / * og temperatur B mindre enn 50'C *
Fana = 1; / / *****************************************
fanB = 0;
)
else if ((tempB> 400) & & (tempA <500)) / / ********************************* ********
(/ / * LED B og Fan B aktiveres bare for *
leda = 0; / / * temperatur En mindre enn 40'C og *
ledB = 1; / / * temperatur B større enn 50'C *
Fana = 0; / / *****************************************
fanB = 1;
)
else if ((tempB> 400) & & (tempA> 500)) / / ********************************* ********************
(/ / * Alle LED A & LED B, Fan A & Fan B *
ledB = 1; / / * aktivert for temperatur større enn 40'C *
leda = 1; / / * og temperatur B større enn 50'C *
Fana = 1; / / ******************************************** *********
fanB = 1;
;
)
else if ((tempB <400) & & (tempA <500)) / / ********************************* ********************
(/ / * Alle LED A & LED B, Fan A & Fan B *
ledB = 0; / / * disactivated for temperatur Et mindre enn 40'C *
leda = 0; / / * og temperatur B mindre enn 50'C *
Fana = 0; / / ******************************************** *********
fanB = 0;
)
forsinkelse (2000);
)
)
)//================== subroutine LCD innstillingen ==========================
void send_config (unsigned char data)
(
RS = 0;
LCD = data;
forsinkelse (500);
e_pulse ();
)
void e_pulse (void)
(
E = 1;
forsinkelse (500);
E = 0;
forsinkelse (500);
)
void send_char (unsigned char data)
(
RS = 1;
LCD = data;
forsinkelse (500);
e_pulse ();
)void lcd_goto (unsigned char data)
(
if (data <16)
(
send_config (0x80 data);
)
ellers
(
data = data-20;
send_config (0xC0 data);
)
)void lcd_clr (void)
(
RS = 0;
send_config (0x01);
forsinkelse (600);
)void dis_num (unsigned lang data)
(
unsigned char hundred_thousand;
unsigned char ten_thousand;
unsigned char tusen;
unsigned char hundre;
unsigned char tiende;
hundred_thousand = data/100000;
data = data% 100000;
ten_thousand = data/10000;
data = data% 10000;
tusen = data / 1000;
data = data% 1000;
hundre = data / 100;
data = data% 100;
tiende = data / 10;
data = data% 10;
if (hundred_thousand> 0)
(
send_char (hundred_thousand 0x30); / / 0x30 lagt til ASCII-kode
send_char (ten_thousand 0x30);
send_char (tusen 0x30);
send_char (hundre 0x30);
send_char (tiende 0x30);
send_char (data 0x30);
)
else if (ten_thousand> 0)
(
send_char (ten_thousand 0x30); / / 0x30 lagt til ASCII-kode
send_char (tusen 0x30);
send_char (hundre 0x30);
send_char (tiende 0x30);
send_char (data 0x30);
)
else if (tusen> 0)
(
send_char (tusen 0x30); / / 0x30 lagt til ASCII-kode
send_char (hundre 0x30);
send_char (tiende 0x30);
send_char (data 0x30);
)
else if (hundre> 0)
(
send_char (hundre 0x30); / / 0x30 lagt til ASCII-kode
send_char (tiende 0x30);
send_char (data 0x30);
)
else if (tiende> 0)
(
send_char (tiende 0x30); / / 0x30 lagt til ASCII-kode
send_char (data 0x30);
)
else send_char (data 0x30); / / 0x30 lagt til ASCII-kode
)
void økning (unsigned lang data)
(
unsigned short j;
for (j = 10; j> 0; j -)
(Lcd_goto (32);
data = data 1;
dis_num (data);
forsinkelse (10000);
)
)
//================== subroutine ADC =========================
void read_adc (void)
(
unsigned short i;
unsigned long result_temp = 0;
for (i = 2000; i> 0; i-= 1) / / looping 2000 ganger for å få gjennomsnittlig verdi
(
ADGO = 1; / / ADGO er bit 2 av ADCON0 register
while (ADGO == 1); / / ADC starten ADGO = 0 etter ferdig ADC fremgang
result = ADRESH;
resultat = resultat <<8; / / skifte til venstre for 8 bit
resultat = resultat | ADRESL; / / 10 bit Resultatet fra ADC
result_temp = resultat;
)
result = result_temp/2000; / / får gjennomsnittlig verdi
)
unsigned short read_temp (void)
(
unsigned short temp;
temp = resultat;
return temp;
)
//================== subroutine FORSINKELSE ==========================
void forsinkelse (unsigned kort i)
(
for (; i> 0; i -);
)