Email: Password: Remember Me | Create Account (Free)

Back to Subject List

Old thread has been locked -- no new posts accepted in this thread
???
08/06/11 11:58
Read: times


 
#183230 - modified code
Responding to: ???'s previous message
Thanks andey for your suggession.

Now I modified the delay routine.

Now can any tell me the mistake in this code.

The code are as below

Thanks


/*
Led display program using 16K33 (20 pin package) with 89s52 controller
*/
#include <c:c51incstdio.h>
#include <c:c51increg52.h>
#include <c:c51incintrins.h>

#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long int


#define SDA     P25
#define SCL     P24

uint    ms10;
uchar   dly2;

int stop(),
    start(),
    delay(),
    outdata(),
    shout(unsigned char serialout),
    init_driver();


int init_driver()               /*Driver initialisation program start here */
{
start();                //start command to HT16K33
shout(0x00);            //display data address pointer
shout(0x21);            //Turns on internal oscillator
shout(0x81);            //Display on blinking off
shout(0xef);            //Dimming set to 16/16
stop();
SDA = 1;
SCL = 1;
}

int outdata()           /*Driver initialisation program start here */
{
start();                //start command to HT16K33
shout(0xe0);            //slave address
shout(0x01);            //command reg address byte display address set to 0x01
shout(0x55);            //data byte 4 segnent turns on & 4 turns off
stop();                 //stop command
SDA = 1;
SCL = 1;
}


stop()                  //stop subroutine for HT16K33
{
SDA = 0;
SCL = 1;
_nop_();
SDA = 1;
_nop_();
_nop_();
_nop_();
}

start()                 //start subroutine for HT16K33
{
SDA = 1;
SCL = 1;
_nop_();
SDA = 0;
_nop_();
_nop_();
SCL = 0;
_nop_();
}

int shout(unsigned char serialout)      //Data transfer to HT16K33 subroutine
{
unsigned char eepromcounter;
eepromcounter = 0x08;                   //8 bit data transmission so counter loaded with 0x08
while(eepromcounter)                    //while counter does not become 0 out data to 16K33
        {
        serialout = serialout << 1;     //left shift datareg
        _nop_();
        SDA = CY;                       //move carry on SDA line
        _nop_();
        SCL = 1;                        //give clock pulse
        _nop_();
        _nop_();
        _nop_();
        _nop_();
        SCL = 0;
        --eepromcounter;                //decrement the counter by 1
        }
SDA = 1;                                //make SDA high
_nop_();
_nop_();        
SCL = 1;                                //give clock pulse
_nop_();
_nop_();
SCL = 0;
}

delay()                 //delay routine
{
for(dly2 = 0;dly2 < 12;dly2++);
}

void main(void)
{
SP = 0xa0;

delay();                //give power on delay of greater than 100 ms

TMOD = 0x11;    //0001 0001     //both timers are initialised to 16 bit mode

TR0 = 1;
TR1 = 1;

TH0 = 0xfc;                     //load timer 0 for 1 ms
TL0 = 0x17;                     

TH1 = 0xec;                     //load timer 1 for 5 ms
TL1 = 0x78;

P0 = 0xff;                      //make all port as output port
P1 = 0xff;
P2 = 0xff;
P3 = 0xff;

init_driver();                  //call driver initialisation routine

IE = 0x8a;

for(;;);
}

timecalc() interrupt 1 using 1
{
TH0 = 0xfc;
TL0 = 0x17;

++ms10;
if(ms10 > 1000)                 //1 sec timer
        {
        ms10 = 0;
        outdata();              //every 1 sec give o/p to HT16K33
        }
}

time() interrupt 3 using 3
{
TH1 = 0xfc;
TL1 = 0x17;
}


List of 19 messages in thread
TopicAuthorDate
Driving HT16K33 using 89S52            01/01/70 00:00      
   How to post legible source code            01/01/70 00:00      
      HLL Delay Routines - beware!!            01/01/70 00:00      
      modified code            01/01/70 00:00      
         How do you think that will help??            01/01/70 00:00      
   some comments on code            01/01/70 00:00      
      testing of new code            01/01/70 00:00      
         HLL Delay Routines            01/01/70 00:00      
         one thing            01/01/70 00:00      
            CY in C ? _NOT_            01/01/70 00:00      
               I'll use new code.            01/01/70 00:00      
   Getting success            01/01/70 00:00      
      one modification            01/01/70 00:00      
      For How Long?            01/01/70 00:00      
         No need to use that instruction            01/01/70 00:00      
            Start by caring about the C standard            01/01/70 00:00      
               Learning the 'C' programming language            01/01/70 00:00      
            C Language Supports No Carry Bits            01/01/70 00:00      
            Talking to HT16K33            01/01/70 00:00      

Back to Subject List