单片机交流
直播中

李志静

7年用户 1406经验值
私信 关注
[问答]

如何去编写STC8系列单片机的相关代码

什么是STC8系列单片机
如何去编写STC8系列单片机的相关代码?

回帖(1)

蓝静

2021-8-5 15:40:00
单片机介绍:
STC8系列单片机是不需要外部晶振和外部复位的单片机,是目前全球最快的8051 单片机(相同时钟频率),比传统的8051约快12倍(速度快11.2~13.2倍)。
相关代码:
//PCF8591.c
#include "PCF8591.h"
#include "delay.h"
#include "stc8.h"
#include //包含NOP空指令函数_nop_();
***it SDA=P1^4;       //定义总线连接端口
***it SCL=P1^5;
//读取AD模数转换的值,有返回值
unsigned char ReadADC(unsigned char Chl)
{
unsigned char Data;
P_SW2 = 0x80;
I2CCFG = 0xe0;  //使能I2C主机模式
I2CMSST = 0x00;
Start();        
SendData(0x90);//写入芯片地址
RecvACK();
SendData(0x40|Chl);//写入选择的通道,Chl的值分别为0、1、2、3,分别代表1-4通道
RecvACK();
Start();
SendData(0x91);    //读入地址
RecvACK();
Data=RecvData();    //读数据
SendNAK();
Stop();
P_SW2 = 0x00;
return Data;   //返回值
}
void Wait()
{
while (!(I2CMSST & 0x40));
I2CMSST &= ~0x40;
}
void Start()
{
I2CMSCR = 0x01;//发送START命令
Wait();
}
void SendData(char dat)
{
I2CTXD = dat;  //写数据到数据缓冲区
I2CMSCR = 0x02;//发送SEND命令
Wait();
}
void RecvACK()
{
I2CMSCR = 0x03;//发送读ACK命令
Wait();
}
char RecvData()
{
I2CMSCR = 0x04;//发送RECV命令
Wait();
return I2CRXD;
}
void SendNAK()
{
I2CMSST = 0x01;//设置NAK信号
I2CMSCR = 0x05;//发送ACK命令
Wait();
}
void Stop()
{
I2CMSCR = 0x06;//发送STOP命令
Wait();
}
//main.c
#include "stc8.h"
#include "PCF8591.h"
#include "lcd1602.h"
unsigned char Guangzhao;
void main()
{
LCD_Init();
while(1)
{
Guangzhao=100-ReadADC(0)/2.56;//获取数据并计算为百分比
LCD_Manifest(2,11,Guangzhao/100);//显示百位
LCD_Manifest(2,12,Guangzhao%100/10);//显示十位
LCD_Manifest(2,13,Guangzhao%10);//显示个位
}
}
}
AD威廉希尔官方网站 图:
威廉希尔官方网站 除了一些基本供电和开关威廉希尔官方网站 ,再就是把PCF8591模块的IIC接口接到单片机的P1.4和P1.5引脚,这俩个引脚是这款单片机具有硬件IIC功能的引脚,==不可以随意换。==实物图片上面那些LED和轻触按键是原来有的,没有实际作用。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分