注:所有实验现象均有视频
嗯 开发板呢 是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
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;
}
}