ngoprek mikro stc biar cuan


perkenalan dengan mikro stc karena ingin untuk banyak, bisa dibilang bikin sistem minimum harga dibawah 10.000 akan sangat sulit sekali, tidak dengan stc

berikut jenis ic stc yang pernah di icip icip

untuk downloader nya memaki ini dulu, maaf usb to serial ftdi nya ga ketemu

keunggulan memakai downloader ini, ketika produksi tidak diperlukan lagi komputer , karena firmware dari komputer berupa file hex di copy ke downloader ini.

untuk compiler memakai keil

berikut contoh program untuk menyalakn 1 led di port p3.2 dan 7 segment memakai driver 74595 di port p3.3,p3.4 dan p3.5

#include<reg51.h>
#include"intrins.h"


#define led_hi    P3|=(1<<2)
#define led_lo    P3&=~(1<<2)

#define data_hi    P3|=(1<<5)
#define data_lo    P3&=~(1<<5)
#define strobe_hi    P3|=(1<<4)
#define strobe_lo    P3&=~(1<<4)
#define clock_hi    P3|=(1<<3)
#define clock_lo    P3&=~(1<<3)

sfr P3M0 = 0xb2;
sfr P3M1 = 0xb1;

unsigned char counter;

unsigned char code fontsegment23[]=
{
	
	//badpfgedc normal
	0xD7,//0   x
	0x81,//1  x
	0xCE,//2
	0xCB,//3
	0x99,//4
	0x5B,//5
	0x5F,//6
	0xC1,//7
	0xDF,//8
	0xDB,//9
	0x00,
	0x00,
};

unsigned char code fontsegment23not[]=
{
	//eddpcgbaf terbalik
	
	0xD7,//0   x
	0x14,//1  x
	0xCE,//2   
	0x5E,//3
	0x1D,//4
	0x5B,//5
	0xDB,//6
	0x16,//7
	0xDF,//8
	0x5F,//9
	0x00,
	0x00,

};



void Delay500ms()		//@11.0592MHz
{
	unsigned char i, j, k;

	i = 29;
	j = 14;
	k = 54;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}


void Delay1000ms()		//@11.0592MHz
{
	unsigned char i, j, k;

	i = 43;
	j = 6;
	k = 203;
	do
	{
		do
		{
			while (--k);
		} while (--j);
	} while (--i);
}

void Delay1us()		//@11.0592MHz
{
	unsigned char i;

	_nop_();
	_nop_();
	i = 1;
	while (--i);
}

void delay_us(unsigned int nilai)
{
	unsigned int i1;
	for(i1=0;i1<nilai;i1++)
	{
		Delay1us();
	}
}

void init_devices()
{
	 //push pull
	  // m1 m0
	  // 0   1
	  P3M0 |= (1<<2); 
	  P3M1 &=~ (1<<2); 
    P3M0 |= (1<<3); 
	  P3M1 &=~ (1<<3); 
	  P3M0 |= (1<<4); 
	  P3M1 &=~ (1<<4); 
	  P3M0 |= (1<<5); 
	  P3M1 &=~ (1<<5);
		data_lo;
		strobe_lo;
		clock_lo;
	
}
//======================================

void clock_74595()
{
	clock_hi;
	delay_us(1);
	clock_lo;
}

void strobe_74595()
{
	strobe_hi;
	delay_us(1);
	strobe_lo;
}


void kirimbyte74595(unsigned char dataku)
{
	unsigned char dataled;
	dataled=dataku;
	if(dataled&(1<<7))data_hi;else data_lo;
	clock_74595();
	if(dataled&(1<<6))data_hi;else data_lo;
	clock_74595();
	if(dataled&(1<<5))data_hi;else data_lo;
	clock_74595();
	if(dataled&(1<<4))data_hi;else data_lo;
	clock_74595();
	if(dataled&(1<<3))data_hi;else data_lo;
	clock_74595();
	if(dataled&(1<<2))data_hi;else data_lo;
	clock_74595();
	if(dataled&(1<<1))data_hi;else data_lo;
	clock_74595();
	if(dataled&(1<<0))data_hi;else data_lo;
	clock_74595();
}
void main()
{
		init_devices();
		while(1)
		{
			for(counter=0;counter<10;counter++)
			{
				led_hi;
				kirimbyte74595(fontsegment23[counter]);
				kirimbyte74595(fontsegment23[counter]);
				kirimbyte74595(fontsegment23not[counter]);
				kirimbyte74595(fontsegment23[counter]);
				strobe_74595();
				Delay500ms();
				led_lo;
				Delay500ms();
				
			}
		
		}
	
}

file reg51.5 didapat dari STC-ISP.

hati hati untuk modul ada yang pakai ic STC8H1K08 TSSOP20 dan ada yang memakai STC8G1K08 TSSOP20. di sesuaikan saja

berikut file reg51.h pada compiler keil

jika file reg51.h dengan tipe ic yang dipakai tidak sesuai maka proses download firmware ke ic akan selalu gagal.

hasil compile pada keil

hasil ngoprek stc8h1k08-tssop20

untuk donwloader yang memakai ftdi nanti kita lanjut jikalau sudah ketemu

Tinggalkan komentar