① 关于STC单片机指令周期及延时函数
假设你用的12M晶振,IT单片机;
参照STC的数据手册“2.6 指令系统分类总结及与普通8051 指令执行时间对比”
可查出: 机器周期
L1:CLR A 1
MOV R6,A 2
L2:INC R6 3
CJNE R6,#0X09,L2 4
DJNZ R7,L1 4
RET 4
你的延时=((1+2+9*(3+4)+4)*n+4)/12000000秒=(70*n+4)/12us;
n取1的话=74/12=6.167us;
② stc8单片机比stc15单片机有哪些地方好的
STC8是最新一代的,和STC15比指令周期又有加快。硬件也更强悍,5个16位自动重装定时器,4路高速串口复用了可当九组,15路12位800K高速ADC 并且有了ADC参考电压引脚(STC15是10位AD),STC15没有。多达59个IO。还有就是STC8现在没直插型号了,这一点的话,STC15更灵活一些。
③ 怎么读取STC89C52单片机的p1.0至p1.7的八个端口的电平值也就是是0还是1 ,怎么写程序
如果是用汇编的话直接mov a,p1,在A就可以看得到端口的电压值了。C语文也类似。
④ 什么是STC单片机
STC系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机。
它是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S),针对电机控制,强干扰场合。
这种工艺的存储器用户可以用电的方式瞬间擦除、改写。而且STC系列单片机支持串口程序烧写。显而易见,这种单片机对开发设备的要求很低,开发时间也大大缩短。写入单片机内的程序还可以进行加密。
(4)STC8单片机输入法扩展阅读
单片机技术的开发
(1)CPU开发。
开发单片机中的CPU总线宽度,能够有效完善单片机信息处理功能缓慢的问题,提高信息处理效率与速度,开发改进中央处理器的实际结构,能够做到同时运行2-3个CPU,从而大大提高单片机的整体性能。
(2)程序开发。
嵌入式系统的合理应用得到了大力推广,对程序进行开发时要求能够自动执行各种指令,这样可以快速准确地采集外部数据,提高单片机的应用效率。
(3)存储器开发。
单片机的发展应着眼于内存,加强对基于传统内存读写功能的新内存的探索,使其既能实现静态读写又能实现动态读写,从而显着提高存储性能。
(4)计算机开发。
进一步优化和开发单机片应激即分析,并应用计算机系统,通过连接通信数据,实现数据传递。
⑤ 各位大侠,我用STC单片机做键盘处理的时候,以前都这么用的,但这次这么用就是不行。
if(set_keyboard==0)
{
delay_ms(10);
if(set_keyboard==0)
{
while(set_keyboard!=1)
{
display(temp,humidity);
}
in_keyboard_flag=1;
}
}
这样是不是好一点,如果少了大括号的话那软件去抖就没用了
⑥ STC8位单片机怎么和32位WIFI模块串口通信采用UART方式
如果确认是串口,那有机器的倍数无关,电脑还64位呢,串口依然是可以8位传输。
⑦ stc12c5a60s2单片机的8路AD要设置什么才能同时用
stc12c5a60s2单片机有8路ad输入,但是它的ad核只有一个,1次只能进行一个输入端的ad转换,你可以看一下它的datasheet上面是有相关的说明的,在stc官网上也有代码,进入www.stcmcu.com/网站,按下ctrl键+f键就可以查询你想要的代码了。
⑧ 最近使用stc单片机内部的eeprom,希望单片机运行过程中将变化的数据保存在eeprom中,下次开机时再从中调用
#include<reg52.h>
#include<intrins.h>
/*以下是配置STC单片机的寄存器*/
/*相关资料在STC89C51RC的PDF的第35页开始*/
sfr ISP_DATA = 0xE2;
sfr ISP_ADDRH = 0xE3;
sfr ISP_ADDRL = 0xE4;
sfr ISP_CMD = 0xE5;
sfr ISP_TRIG = 0xE6;
sfr ISP_CONTR = 0xE7;
#define uint unsigned int
#define uchar unsigned char
#define ISP_BYTE_READ 1 //ISP字节读
#define ISP_BYTE_PROGRAM 2 //ISP直接编程
#define ISP_SECTOR_ERASE 3 //ISP扇区擦除
uchar code table[10] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
/********************************************************************
* 名称 : Delay()
* 功能 : 延时,延时时间为 10ms * del
* 输入 : del
* 输出 : 无
***********************************************************************/
void Delay_1ms(uint i)
{
uchar x,j;
for(j=0;j<i;j++)
for(x=0;x<=148;x++);
}
/********************************************************************
* 名称 : ISP_ERASE()
* 功能 : EEPROM的扇区擦除
* 输入 : Address(擦除扇区的地址)
* 输出 : 无
***********************************************************************/
void ISP_ERASE(Address)
{
ISP_ADDRL = Address;
ISP_ADDRH = Address >> 8;
ISP_CONTR = 0x81;
ISP_CMD = ISP_SECTOR_ERASE;
ISP_TRIG = 0x46; //PDF手册中说先像 ISP_TRIG 中写入 0x46, 然后写入 0xb9
ISP_TRIG = 0xb9;
_nop_();
_nop_();
}
/********************************************************************
* 名称 : ISP_READ()
* 功能 : 从EEPROM相应的地址中读出值
* 输入 : Address(想要读取EEPROM的地址)
* 输出 : Read_Data(从EEPROM读出的值)
*********************************************************************/
uint ISP_READ(Address)
{
uchar Read_Data;
ISP_ADDRL = Address;
ISP_ADDRH = Address >> 8;
EA = 0;
ISP_CONTR = 0x81;
ISP_CMD = ISP_BYTE_READ;
ISP_TRIG = 0x46;
ISP_TRIG = 0xb9;
_nop_();
_nop_();
Read_Data = ISP_DATA;
return Read_Data;
}
/********************************************************************
* 名称 : ISP_PROGRAM()
* 功能 : 实现EEPROM的字节编程
* 输入 : Address为编程的地址,Data_temp为想要编程的值
* 输出 : 无
***********************************************************************/
void ISP_PROGRAM(Address, Data_temp)
{
ISP_DATA = Data_temp;
ISP_ADDRL = Address;
ISP_ADDRH = Address >> 8;
ISP_CONTR = 0x81;
ISP_CMD = ISP_BYTE_PROGRAM;
ISP_TRIG = 0x46;
ISP_TRIG = 0xb9;
_nop_();
_nop_();
}
/********************************************************************
* 名称 : Main()
* 功能 : 主函数
* 输入 : 无
* 输出 : 无
***********************************************************************/
void Main()
{
uint i;
uchar LED_Buffer = 0;
while(1)
{
for(i=0; i<50; i++)
{
LED_Buffer = ISP_READ(0x2c00);
P0 = table[LED_Buffer % 10];
P2 = 1;
Delay_1ms(6);
P0 = table[LED_Buffer / 10 % 10];
P2 = 0;
Delay_1ms(6);
}
LED_Buffer++;
ISP_ERASE(0x2c00); //注意:字节编程时必须要先要擦除整个扇区
ISP_PROGRAM(0x2c00, LED_Buffer);
}
}
⑨ 求stc系列单片机,要求:8个引脚,定时准,
STC15F10X系列
STC的8脚单片机有直插和SOP两种形式的封装,其中有6个IO口,剩下2个是VCC和GND ,不需要带晶振内部自带有时钟发生电路,在此要说明这种型号的单片机有专用的烧录软件,在宏晶官网都有下载。这6个IO口实际上是我们普通单片机上的P3口,实际编程时也是使用P3.X来实现IO口操作。唯一的不同就是没有硬件的串口,需要用到定时器来模拟(这点不好),但是下载电路和STC的串口下载电路时一样的。不做修改。这个有点费解?下载时用到的是串口形式的下载电路,硬件上使用时却没有串口。杯具啊!
关于IO口的复用功能,除P3.1没有复用功能外,其他引脚均有复用功能。分别是5个外部中断,3个时钟输出,一个复位输入 。芯片默认是不需要复位电路的,上电自复位的。可以通过软件来选择引脚作为复位脚。同时在烧录软件上可以选择低压复位。手册上说的是8种。软件上只显示了6种-不解???让人惊喜的是烧录软件上提供硬件开启看门狗功能。还可以选择看门狗分频级数。还是蛮方便的嘛。。。程序又少了几句话 。最后要说一点的是该种单片机以E结尾的都有EEPROM喔。例如我买的STC15F104E。
⑩ stc单片机p54/p55哪个是ad输入
STC单片机没有P5.4和P5.5,只有P5.0~P5.3,都不是AD口