STC8H8K64U教程(摸鱼版)

注:所有实验现象均有视频

        嗯 开发板呢 是stc的开天斧三,没有做任何改动

        stc8h8k64.h为使用stc isp自动生成的

        还有一点很重要的,,,嗯,就不说了

1.流水灯

#include "stc8a8k64d4.h"

void main()
{	
	unsigned int i=0;
	unsigned char cnt=0;
	P2M0=0x00;	P2M1=0x00;
	while(1)
	{
		P2=(~0x01<8)
			cnt=0;
//		P2=~(0x01<8)
//			cnt=0;
	}
	
}

 1.1单个led的流水灯STC8H8K64U教程(摸鱼版)_第1张图片

1.1全亮的led

         区区一种怎么行,多来几种,,,有空吧  STC8H8K64U教程(摸鱼版)_第2张图片

2.定时器2&中断

        现象嗯,led闪烁,1s一次哦

/*stc8h8k64u,T2定时器为固定的16位自动重装*/
#include "stc8h8k.h"

sbit led=P2^0;

void main()
{	
	P2M1=0x00;	P2M0=0x00;
	AUXR |= 0x04;//T2 1T模式
	T2L = 0xCD;//波特率115200
	T2H = 0xD4;
	AUXR |= 0x10;// T2定时器开始计时	
	EA=1;
	IE2=0x04;//T2中断
	while(1);
}
void T2interrupt() interrupt 12
{	
	static unsigned int cnt=0;
	cnt++;
	if(cnt>1000)
	{
		cnt=0;
		led=!led;
	}
}
​

3.串口1:接收到数据,自动加一,发送出去

        别忘了使用串口调试助手查看现象哦,肉体凡胎是开不到的哦

//uart下载使用的是P30,P31,即使P_SW1|=0x40;//串口功能脚选择位3.6-rxd,3.7-txd,仍然下载使用的是P30,P31,,,但是数据只在3.6-rxd,3.7-txd
#include "stc8h8k.h"

//此种方法来自数据手册但是实测无法使用//#define brt (65536-(fosc/115200+2)/4)		//定时器重载值
//此种方法来自数据手册但是实测无法使用//#define fosc 24000000UL		//系统时钟频率

void main()
{
	P3M1=0x00;	P3M0=0x00;//准双向
	P_SW1|=0x40;//串口功能脚选择位3.6-rxd,3.7-txd
	SCON|=0x50;//模式1可变波特率8位数据方式,允许串口接收数据
	AUXR|=0x40;//T1-1T模式	
	AUXR&=0xFE;//T1为波特率发生器	AUXR默认为0000 0001 与操作第一位为0,即定时器1为波特率发生器
	TMOD&=0X0F;//模式1,16位自动重装
//此种方法来自数据手册但是实测无法使用//	TH1=brt;
//此种方法来自数据手册但是实测无法使用//	TL1=brt>>8;
	TL1 = 0xCC;		//此为设定波特率24m时,115200
	TH1 = 0xFF;		
	TR1=1;//打开T1
	ET1=0;//关闭T1中断
	ES=1;//串口1中断使能
	EA=1;//总中断使能

}

void T1interrupt() interrupt 4
{	
	if(RI)
	{
		RI=0;
		SBUF=SBUF+1;
	}
	if(TI)
	{
		TI=0;
	}
}

你可能感兴趣的:(不太靠谱的教程呢,51单片机)