sonic05
Joined: 19 Sep 2010 Posts: 5
|
traffic light with clock |
Posted: Mon Sep 27, 2010 4:31 am |
|
|
Please..anybody can help me to combine this two programs.
Our plan is to build a trafficlight with clock that will run using 1 ic(16f877a).
and this is the program of clock:
Code: |
#include <16F877A.h>
#fuses XT,NOWDT,PUT,NOBROWNOUT,NOLVP
#use delay(clock = 4000000)
#byte PORTA=0X05
#byte PORTC=0x07
#byte PORTB=0X06
#define A0 PIN_A0
#define A1 PIN_A1
#define A2 PIN_A2
#define A3 PIN_A3
#define A4 PIN_A4
int sec1,sec2,min1,min2,hour1,hour2;
int num1=5,num2=5,num3=5;
int counter=125;
int flag=0;
const int table[10]={0b00111111,
0b00000110,
0b01011011,
0b01001111,
0b01100110,
0b01101101,
0b01111101,
0b00000111,
0b01111111,
0b01101111};
void main()
{
PORTB=0X00;
PORTC=0X00;
set_tris_a(0xff);
set_tris_c(0x00);
set_tris_b(0x00);
set_RTCC(6);
setup_counters(RTCC_INTERNAL,RTCC_DIV_32);
enable_interrupts (INT_RTCC);
enable_interrupts (GLOBAL);
for(;;)
{
PORTB=table[sec1];
PORTC=0X01;
delay_ms(15);
PORTB=table[sec2];
PORTC=0x02;
delay_ms(15);
PORTB=table[min1];
PORTC=0x04;
delay_ms(15);
PORTB=table[min2];
PORTC=0x08;
delay_ms(15);
PORTB=table[hour1];
PORTC=0x10;
delay_ms(15);
PORTB=table[hour2];
PORTC=0x20;
delay_ms(15);
if(flag==1){
flag=0;
}
if(input(A4)==1)
{
disable_interrupts(INT_RTCC);
if(input(A2)==1) { --num1; }
if(num1==0){
if(++min1>9) {
min1=0;
if(++min2>5) { min2=0; }
}
num1=5;
}
if(input(A3)==1){ --num2; }
if(num2==0) {
if( ++hour1>9 )
{
hour1=0;
++hour2;
}
if( (hour2==1) & (hour1==3) ) {
hour1=1;
hour2=0;
}
num2=5;
}
if(input(A1)==1) { --num3; }
if(num3==0){
if(++sec1>9) {
sec1=0;
if(++sec2>5) { sec2=0; }
}
num3=5;
}
}
else if(input(A4)==0){
enable_interrupts(INT_RTCC);
}
}
}
#int_RTCC
void microII()
{ //void switch_time();
if(--counter>0)return;
counter=125;
flag=1;
if(++sec1>9){
sec1=0;
if(++sec2>5){
sec2=0;
if(++min1>9){
min1=0;
if(++min2>5){
min2=0;
if( ++hour1>9 )
{
hour1=0;
++hour2;
}
if( (hour2==1) & (hour1==3) ) {
sec1=0;
sec2=0;
min1=0;
min2=0;
hour1=1;
hour2=0;
}
}
}
}
}
}
|
and this is for traffic light (i will connect this to the port not yet used)
Code: |
#include <16f877a.h>
#use (clock=2M)
void main()
{
while(1)
{
output_d(0x01);
delay_ms(2000);////////////////i will change the delay
output_d(0x02);
delay_ms(2000)
output_d(0x03);
delay_ms(2000);
}} |
|
|