sahu
Member
hi every body
pl help me . I'm confused how do it .
my working code as below .
now i have need port conversion portc to portb .
those conversion as below.
pl help me . I'm confused how do it .
my working code as below .
PHP:
/***********************************************************************************
its ok on oshon soft on 11:04 PM 1/10/2014
1 st ver 11:04 PM 1/10/2014
/* 16F72 Configuration dual I|P
O = Output, I = Input RIGHT NOW AS DEMO
_________
MCLR | 1 28 | RB7 --> (O) ==
(I) ADC1 --> AN0 | 2 27 | RB6 --> (O) ==
(I) ADC2 --> AN1 | 3 26 | RB5 --> (O) ==
(I) ADC3 --> AN2 | 4 25 | RB4 --> (O)
(I) ADC4 --> AN3 | 5 24 | RB3 --> (O) ==
(O) <-- RA4 | 6 23 | RB2 --> (O) == display[1]
(O) ADC4 <-- AN4 | 7 22 | RB1 --> (O) == display[2]
Vss | 8 21 | RB1 --> (O) == display[3]
--> OSC1 | 9 20 | Vdd
<-- OSC2 |10 19 | Vss
A == (O) <-- RC0 |11 18 | RC7 --> (O) ==
B == (O) <-- RC1 |12 17 | RC6 --> (O) == G
C == (O) <-- RC2 |13 16 | RC5 --> (O) == F
D == (O) <-- RC3 |14 15 | RC4 --> (O) == E
---------
*/
**************************************************************************************/
#include <16F72.h>
//ADC resolution
#device ADC=8
//CONFIG words
#USE DELAY( CLOCK=4000000) /* Using a 4 Mhz clock */
#FUSES XT,NOWDT,NOPROTECT,NOPUT
//Clock used for delay routines
//#use delay(crystal=12MHz)
#use FIXED_IO(B_outputs=PIN_B7,PIN_B6,PIN_B5,PIN_B4,PIN_B3,PIN_B2,PIN_B1,PIN_B0)
#use FIXED_IO(C_outputs=PIN_C7,PIN_C6,PIN_C5,PIN_C4,PIN_C3,PIN_C2,PIN_C1,PIN_C0)
//Global Variables
unsigned int8 enablessdx = 0;
unsigned char display[3], SSD1 = 0, SSD2 = 0, SSD3 = 0, displayCounter = 0;
unsigned long dummy = 0;
unsigned char CA[] = {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90};
// 0 1 2 3 4 5 6 7 8 9
unsigned char CA_P_o[] = {0xCF, 0xBF, 0x8C};//{0x8C, 0xC0, 0xB7};
// I - P // P o
unsigned char CA_P_1[] = {0xC0, 0xBF, 0x8C};
// O - P // P 1
//Function Definitions
void turnoffssd(){
output_low(PIN_b0);
output_low(PIN_b1);
output_low(PIN_b2);
}
void splitnum(){
display[0] = (dummy % 10);
display[1] = (dummy / 10) % 10;
display[2] = (dummy / 100);
}
//******************* ISR Code starts ******************************************************
//Comment this code if you don't want to use interrupts to display SSD data.
//If this code is commented out then the code in while(1) loop which displays
//SSD data should be uncommented.
#INT_TIMER1
void TIMER1_isr(void)
{
if(interrupt_active(int_timer1))
{
enablessdx++;
if(enablessdx == 4)enablessdx = 1;
turnoffssd();
switch(enablessdx){
case 1:
output_c(SSD3);
output_high(PIN_b0);
break;
case 2:
output_c(SSD2);
output_high(PIN_b1);
break;
case 3:
output_c(SSD1);
output_high(PIN_b2);
break;
}
}
set_timer1(0xFDA7);
clear_interrupt(int_timer1);
}
//******************* ISR Code ends ******************************************************
void main()
{
float value;
set_tris_b(0x00);
set_tris_c(0x00);
output_b(0x00);
output_c(0x00);
// setup_comparator(NC_NC_NC_NC);
setup_adc_ports(ALL_ANALOG);
// setup_adc_ports(sAN0 | sAN1);
setup_adc(ADC_CLOCK_INTERNAL);
// setup_vref(FALSE);
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
set_timer1(0xFDA7);
enable_interrupts(INT_TIMER1);
enable_interrupts(GLOBAL);
while(TRUE)
{
//TODO: User Code
if((displayCounter == 1) || (displayCounter == 3))
{
if(displayCounter == 1)set_adc_channel(0);
else if(displayCounter == 3)set_adc_channel(1);
delay_us(100);
read_adc(ADC_START_only);
delay_us(100);
value = read_adc(ADC_read_only) * 30.0 / 1023.0;
splitnum();
{
if((value >= 0.0) && (value < 10.0))
{
dummy = (long)(value * 100.0); //1.23 becomes 123
splitnum();
SSD1 = CA[display[0]];
SSD2 = CA[display[1]];
SSD3 = CA[display[2]];// & 0x7F;
}
else if((value >= 10.0) && (value < 100.0))
{
dummy = (long)(value * 10.0); //12.3 becomes 123
splitnum();
SSD1 = CA[display[0]];
SSD2 = CA[display[1]];// & 0x7F;
SSD3 = CA[display[2]];
}
else if((value >= 100.0) && (value < 1000.0))
{ //required if range of measurement is changed to 0 to 999
dummy = (long)value;
splitnum();
SSD1 = CA[display[0]];
SSD2 = CA[display[1]];
SSD3 = CA[display[2]];
}
delay_ms(1000);
}
}
else if(displayCounter == 0){
SSD1 = CA_P_o[2];
SSD2 = CA_P_o[1];
SSD3 = CA_P_o[0];
}
else if(displayCounter == 2){
SSD1 = CA_P_1[2];
SSD2 = CA_P_1[1];
SSD3 = CA_P_1[0];
}
delay_ms(500);
//delay_ms(20);
displayCounter++;
if(displayCounter > 3) displayCounter = 0;
}
}
now i have need port conversion portc to portb .
those conversion as below.
Code:
/* 16F72 Configuration dual I|P
O = Output, I = Input RIGHT NOW AS DEMO
_________
MCLR | 1 28 | RB7 --> (O) == A
(I) ADC1 --> AN0 | 2 27 | RB6 --> (O) == B
(I) ADC2 --> AN1 | 3 26 | RB5 --> (O) == C
(I) ADC3 --> AN2 | 4 25 | RB4 --> (O) == D
(I) ADC4 --> AN3 | 5 24 | RB3 --> (O) == E
(O) <-- RA4 | 6 23 | RB2 --> (O) == F
(O) ADC4 <-- AN4 | 7 22 | RB1 --> (O) == G
Vss | 8 21 | RB1 --> (O) == display[3]
--> OSC1 | 9 20 | Vdd
<-- OSC2 |10 19 | Vss
== (O) <-- RC0 |11 18 | RC7 --> (O) == display[1]
== (O) <-- RC1 |12 17 | RC6 --> (O) == display[2]
== (O) <-- RC2 |13 16 | RC5 --> (O) ==
== (O) <-- RC3 |14 15 | RC4 --> (O) ==
---------
*/