hi, here is a code, can any one tell me why its not working properly, its digital clock
same code like this i use in ASM that working prfct, but its not working
//#include <AT89Cstm.h> /* special function register declarations */ //#include <stdio.h> #ifndef __REG52_H__ #define __REG52_H__ sfr DataPort = 0xA0; // Port 2 sfr p0 = 0x80; sfr p1 = 0x90; sfr p2 = 0xA0; sfr p3 = 0xB0; sbit Seg1 = 0x90; // Port 1 pin 0, Sec1 sbit Seg2 = 0x91; // Port 1 pin 1, sbit Seg3 = 0x92; // Port 1 pin 2, sbit Seg4 = 0x93; // Port 1 pin 3, sbit Seg5 = 0x94; // Port 1 pin 4, sbit Seg6 = 0x95; // Port 1 pin 5, Hor 2 sbit ShowTime = 0xb6; // port 0.6 sbit SetTime = 0xb7; // port 0.7 sbit PulseIn = 0xB2; // port 3.2 sbit IncrementPressed = 0x97; // port 3.3 Min or hor Increment sbit DecrementPressed = 0x96; // port 3.4 Min or hor Decrement sbit MINorHOr = 0xB5; // port 3.5 Min or hor selection sbit SegHL = 0xB3; // Segment common High or Low port 3.2 sbit DataHL = 0xB4; // Segment Data High or Low #endif unsigned char sec=0,min=10,hour=15,day=1,mnth=1,year=2011; unsigned char SegData[12] = {0x3F,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0xB9}; // 0 1 2 3 4 5 6 7 8 9 blnk C // gfedcba gfedcba hgfedcba // 0111111 1001111 .. .. .. 10111001 bit SecStored = 0; bit IncrementStored = 0; bit DecrementStored = 0; bit TimeStop = 0; bit TimeSaved = 0; bit SendData = 0; unsigned char SendCount = 0; void ShowSec(); void ShowMin(); void ShowHour(); void IncSec(); void IncMin(); void IncHour(); //void DecSec(); void DecMin(); void DecHour(); void Delay(); void ScanSecond(); void ScanIncrement(); void ScanInputs(); void ScanDecrement(); void ScanDecrement(); void main() { unsigned int temp=0; p0 = 255; p1 = 0; p2 = 0; p3 = 255; while (temp !=1) { if (SetTime == 0 || ShowTime == 0) { ShowSec(); ShowMin(); ShowHour(); if (SetTime == 0) { ScanIncrement(); ScanDecrement(); } } else { if(TimeStop == 1) { TimeStop = 0; } p1 = 255; p2 = 255; } ScanSecond(); } } void ScanSecond() { if (PulseIn == 1 && SecStored == 0 && TimeStop == 0) // Scan Second Pulse { IncSec(); SecStored = 1; } else { if (PulseIn == 0 && SecStored == 1) { SecStored = 0; } } } void ScanIncrement() { if (IncrementPressed == 0 && IncrementStored == 0 ) // Scan Increment Pulse { if (MINorHOr == 1 ) { IncMin(); SendData = 1; } else { IncHour(); SendData = 1; } IncrementStored = 1; TimeStop = 1; sec = 0; } else { if (IncrementPressed == 1 && IncrementStored == 1) { IncrementStored = 0; } } } void ScanDecrement() { if (DecrementPressed == 0 && DecrementStored == 0 ) // Scan Decrement Pulse { if (MINorHOr == 1 ) { DecMin(); SendData = 1; } else { DecHour(); SendData = 1; } DecrementStored = 1; TimeStop = 1; sec = 0; } else { if (DecrementPressed == 1 && DecrementStored == 1) { DecrementStored = 0; } } } void ShowSec() { Seg6 = (~SegHL); if(DataHL == 0) DataPort = SegData[sec % 10]; else DataPort = (~(SegData[sec % 10])); Seg1 = SegHL; Delay(); Seg1 = (~SegHL); if(DataHL == 0) DataPort = SegData[sec / 10]; else DataPort = (~(SegData[sec / 10])); Seg2 = SegHL; Delay(); } void ShowMin() { Seg2 = (~SegHL); if(DataHL == 0) DataPort = SegData[min % 10]; else DataPort = (~(SegData[min % 10])); Seg3 = SegHL; Delay(); Seg3 = (~SegHL); if(DataHL == 0) DataPort = SegData[min / 10]; else DataPort = (~(SegData[min / 10])); Seg4 = SegHL; Delay(); } void ShowHour() { Seg4 = (~SegHL); if(DataHL == 0) DataPort = SegData[hour % 10]; else DataPort = (~(SegData[hour % 10])); Seg5 = SegHL; Delay(); Seg5 = (~SegHL); if(DataHL == 0) DataPort = SegData[hour / 10]; else DataPort = (~(SegData[hour / 10])); Seg6 = SegHL; Delay(); } void IncSec() { sec = sec + 1; if(sec==60) { sec = 0; if (SetTime == 1 ) IncMin(); } } void IncMin() { min = min + 1; if(min==60) { min=0; if (SetTime == 1 ) IncHour(); } } void IncHour() { hour = hour + 1; if(hour==24) { hour = 0; //IncHour(); } } /* void DecSec() { sec = sec - 1; if(sec==255) { sec = 59; if (SetTime == 1 ) DecMin(); } } */ void DecMin() { min = min - 1; if(min==255) { min=59; if (SetTime == 1 ) DecHour(); } } void DecHour() { hour = hour - 1; if(hour==255) { hour = 23; //IncHour(); } } void Delay() { unsigned int i; for(i=0; i<100; i++) { } }