sonic05
Joined: 19 Sep 2010 Posts: 5
|
anybody can check my program |
Posted: Sat Oct 02, 2010 8:18 am |
|
|
please help me...
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
#define A5 PIN_A5
#define E1 PIN_E1
int sec1,sec2,min1,min2,hour1,hour2;
int secs1,secs2,mins1,mins2,hours1,hours2;
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);
}
/////////////////////////////////////////////////////////// im not sure in this part
if(input(E1)==1)
{
disable_interrupts(INT_RTCC);
if(input(A2)==1) { --num1; }
if(num1==0){
if(++mins1>9) {
mins1=0;
if(++mins2>5) { mins2=0; }
}
num1=5;
}
if(input(A3)==1){ --num2; }
if(num2==0)
{
if( ++hours1>9 )
{
hours1=0;
++hours2;
}
if( (hours2==2) & (hours1==4) ) {
hours1=1;
hours2=0;
}
num2=5;
}
if(input(A1)==1) { --num3; }
if(num3==0){
if(++secs1>9) {
secs1=0;
if(++secs2>5) { secs2=0; }
}
num3=5;
}
}
else if(input(E1)==0){
enable_interrupts(INT_RTCC);
}
}
}
}
//////////////////////////////////////////////////
#int_RTCC
microII()
{ //void switch_time();
if(input(A5)==0)
{
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 also here...
else if
(input(A5)==1)
{
if(--counter>0)return;
counter=125;
flag=1;
if(++secs1>9){
sec1=0;
if(++secs2>5){
sec2=0;
if(++mins1>9){
min1=0;
if(++mins2>5){
min2=0;
if( ++hours1>9 )
{
hours1=0;
++hours2;
}
if( (hours2==2) & (hours1==4) ) {
secs1=0;
secs2=0;
mins1=0;
mins2=0;
hours1=0;
////////////////////////////////////////////////////////
}
}
}
}
}
}
}
}
}
}
}
} |
In that program...if I press PIN_A5 the program of 24 hours will run. But if not, the program of 12 hours will run. But it still not working. But when I remove all the part that I'm not sure of, the program of 12 hours clock will run.
And can you please help me also to make a program for stopwatch and assign a designated switch ? |
|