We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
#include <AT892051.H> #include <stdio.h> #include <intrins.h>
sbit PIN_P10=P1^0; /* Character to be transfered through thisbit in parallel*/ sbit PIN_P11=P1^1; /* Clock*/ sbit PIN_P12=P1^2; /* Latch*/ sbit DriveMinutes=P1^3; /* 1st 7-segment Display*/ sbit DriveTenMinutes=P1^4; /* 2nd 7-segment Display*/ sbit DriveHours=P1^5; /* 3rd 7-segment Display*/ sbit DriveTenHours=P1^6; /* 4th 7-segment Display*/
unsigned char SevenSegmentData; unsigned char _crol_(unsigned char Temp,unsigned char SevenSegmentData); char Display_Buffer[6]; unsigned char Dispcount; unsigned char mscount;
int Hours=1; int Minutes=0; int Seconds=0; int i=0; char Temp;
code unsigned char DecimalToSevenSegment[11]= { 0xEE,0x28,0xCD,0x6C,0x2B,0x67,0xE7,0x2C,0xEF,0x2F };
void main() {
TMOD=0x01; TH0=0xF8; /* Initializing timer0 for 1ms*/ TL0=0x30; IE=0x82; TR0=1;
do {
sprintf(Display_Buffer,"%02d%02d",Hours,Minutes); /* converting integer into character*/
}while(1);
}
void Timer0(void) interrupt 1 /* ISR begins*/ { TF0=0; TR0=0; TH0=0xF8; TL0=0x30; TR0=1;
{ i++; /* To transfer bits into byte from port pin onto the shift register*/ Dispcount++; /* Dispcount is used to refresh the Hours and Minutes on the LED*/ mscount++; /* Generate 1ms Delay*/ if(++mscount>=1000) { mscount=0; Seconds++;
} if(++Seconds>=59) { Seconds=0; Minutes++; Seconds++;
} if(++Minutes>=59) { Minutes=0; Hours++; Seconds++; Minutes++;
} if(++Hours>=12) { Hours=1; Seconds++; Minutes++; Hours++; } }
// For DriveHours LED
{ if(Dispcount==29) /* This code is for refresh rate of LED1*/ { DriveMinutes=0; DriveTenMinutes=0; DriveHours=0; DriveTenHours=0;
} if(Dispcount==30) {
SevenSegmentData=DecimalToSevenSegment[Display_Buffer[0]-0x30];
if(8>++i) /* For a byte to be read by the port pin*/ {
if (Dispcount==32) { Temp=SevenSegmentData; } if (Dispcount==34) { PIN_P11=1; /* clock is set high*/ }
if (Dispcount==36) { PIN_P10=Temp^7; /* Taking MSB one at a time, the loop continous till all 8-bits are sent to the portpin*/ } if (Dispcount==38) { PIN_P11=0; /*clock is made low*/ } if (Dispcount==40) { SevenSegmentData=_crol_(Temp,1); /* bits are rotated left*/ } PIN_P12=0; /* Data is Latched*/ }
if(Dispcount==48) { DriveTenHours=1;
} }
// For DriveTenHours LED
{ if(Dispcount==49) { DriveMinutes=0; DriveTenMinutes=0; DriveHours=0; DriveTenHours=0; } if(Dispcount==50) {
SevenSegmentData=DecimalToSevenSegment[Display_Buffer[1]-0x30];
{
if(8>++i)
if (Dispcount==52) { Temp=SevenSegmentData; } if (Dispcount==54) { PIN_P11=1; }
if (Dispcount==56) { PIN_P10=Temp^7; } if (Dispcount==58) { PIN_P11=0; } if (Dispcount==60) { SevenSegmentData=_crol_(Temp,1); } PIN_P12=0; }
if(Dispcount==68) { DriveHours=1; } }
// For DriveTenMinutes LED
{ if(Dispcount==69) { DriveMinutes=0; DriveTenMinutes=0; DriveHours=0; DriveTenHours=0; } if(Dispcount==70) {
SevenSegmentData=DecimalToSevenSegment[Display_Buffer[2]-0x30];
if(8>++i) {
if (Dispcount==72) { Temp=SevenSegmentData; } if (Dispcount==74) { PIN_P11=1; }
if (Dispcount==76) { PIN_P10=Temp^7; } if (Dispcount==78) { PIN_P11=0; } if (Dispcount==80) { SevenSegmentData=_crol_(Temp,1); } PIN_P12=0; }
if(Dispcount==88) { DriveTenMinutes=1; } }
// For DriveMinutes LED
{ if(Dispcount==89) { DriveMinutes=0; DriveTenMinutes=0; DriveHours=0; DriveTenHours=0; } if(Dispcount==90) {
SevenSegmentData=DecimalToSevenSegment[Display_Buffer[3]-0x30];
if (Dispcount==92) { Temp=SevenSegmentData; } if (Dispcount==94) { PIN_P11=1; }
if (Dispcount==96) { PIN_P10=Temp^7; } if (Dispcount==98) { PIN_P11=0; } if (Dispcount==100) { SevenSegmentData=_crol_(Temp,1); } PIN_P12=0; }
if(Dispcount==108) { DriveMinutes=1; } }
if(Dispcount==121) { DriveMinutes=0; DriveTenMinutes=0; DriveHours=0; DriveTenHours=0;
first you ignore advice given in your 'ongoing post', then you repost the scribbles.
Erik
This is the active thread - no need for more threads with incorrectly posted code still containing bugs you have already been notified about: http://www.keil.com/forum/docs/thread17309.asp