‘壹’ 求51单片机代码 STC15F2K60S2.H
给一种模式答案:
ORG 0000H
LJMP MAIN
ORG 000BH
LJMP T0ISR
ORG 0030H
MAIN:
MOV TMOD,#01H
MOV TH0,#3CH
MOV TL0,#0B0H
SETB TR0
SETB ET0
SETB EA
MOV R2,#8
MOV A,#0FEH
SJMP $
T0ISR:
CLR TR0
MOV TH0,#3CH
MOV TL0,#0B0H
SETB TR0
DJNZ R2,T0E
MOV P1,A
RL A
T0E:
RETI
END
‘贰’ 什么是STC单片机
STC系列单片机是宏晶科技生产的单时钟/机器周期(1T)的单片机。
它是高速/低功耗/超强抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S),针对电机控制,强干扰场合。
这种工艺的存储器用户可以用电的方式瞬间擦除、改写。而且STC系列单片机支持串口程序烧写。显而易见,这种单片机对开发设备的要求很低,开发时间也大大缩短。写入单片机内的程序还可以进行加密。
(2)stc单片机代码扩展阅读
单片机技术的开发
(1)CPU开发。
开发单片机中的CPU总线宽度,能够有效完善单片机信息处理功能缓慢的问题,提高信息处理效率与速度,开发改进中央处理器的实际结构,能够做到同时运行2-3个CPU,从而大大提高单片机的整体性能。
(2)程序开发。
嵌入式系统的合理应用得到了大力推广,对程序进行开发时要求能够自动执行各种指令,这样可以快速准确地采集外部数据,提高单片机的应用效率。
(3)存储器开发。
单片机的发展应着眼于内存,加强对基于传统内存读写功能的新内存的探索,使其既能实现静态读写又能实现动态读写,从而显着提高存储性能。
(4)计算机开发。
进一步优化和开发单机片应激即分析,并应用计算机系统,通过连接通信数据,实现数据传递。
‘叁’ STC15W408AS单片机初始化代码应该如何写
stc15w408as单片机的定时器T0和stc89c52rc基本相同,程序可以用,但是,stc15w408as 定时器T0的方式0 是特有的,与stc89c52rc不同。只要原程序是用定时器T0的方式1,就可以直接用了。
而stc15w408as 是没有定时器T1的,变成了定时器T2,使用就不同了。是stc15w408as所特有的。
‘肆’ 求讲解这段STC15单片机的代码,外部中断2让LED灯亮
“为什么按下外部中断键就能让LED灯亮一下”
因为程序里面一旦进入外部中断,就把P1.0管脚翻转一下,如果接了LED就会有亮灭的变化。
“P10=!P10 是什么意思”、
将P1.0管脚的输出电平翻转。
“为什么我改成P20=!P20就报错”
因为程序里只定义了P10,P20这个符号没有定义,你需要自己添加 sbit P20 = P2^0;
“开发板的外部中断焊接到单片机的P1.0引脚,如果我焊接的不是P1.0引脚,那P10=!P10还好使吗”
外部中断跟P1.0管脚没有关系。你重新看电路图去……
“为什么头文件加上#include“STC15.H”就会报错”
因为编译器找不到这个文件在哪儿,当然就会嗷嗷叫唤……
‘伍’ STC 89c52rc单片机代码
/**********************为网友解答例程************************
波特率设置为9600,无奇偶校验,晶振11.0592MHz,STC89C52.
单片机通过串口接收到 字符“a",单片机反馈”a"并打开p1.0 =1 。
如果单片机持续30S 没收到“a" P1.0= 0 。
存在问题:1.延时、端口 要根据你的实际情况改一下参数。
2.上电or复位后,第一次P1.0=0的转换时间要比以后动作转换时间长,不一致。之后正常。
******************************************************************/
#include <reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar buf;
sbit out = P1^0;
void delay(unsigned char s) //11.0592MHz下,带参数延时
{
unsigned char i, j,k;
for(k=s;k>0;k--)
{
i = 180;
j = 73;
do
{
while (--j);
} while (--i);
}
}
void main(void)
{
SCON=0x50; //设定串口工作方式
PCON=0x00; //波特率不倍增
TMOD=0x20; //定时器1工作于8位自动重载模式, 用于产生波特率
EA=1;
ES = 1; //允许串口中断
TL1=0xfd;
TH1=0xfd; //波特率9600
TR1=1;
while(1)
{
delay(100); //延时,此处要根据实际修改成你需要的数值
out = 0; //正常上电,延时后,会使P1.0等于0
//从串口收到a后, 会使P1.0马上等于1,
//然后如果在延时时间内没有再次接收到a ,那程序将再次使P1.0等于0,循环。。。
}
}
/*********************************************************
串行中断服务函数
*********************************************************/
void serial() interrupt 4
{
ES = 0; //关闭串行中断
RI = 0; //清除串行接受标志位
buf = SBUF; //从串口缓冲区取得数据
switch(buf)
{
case 0x61: out = 1;break; //接受到字符a,使P2.0为高(0x61为"a"的ASCII码十六进制形式)
// case 0x32: out = 0;break; //接受到字符2,使P2.0为低(测试使用)
default: break; //接受到其它数据,无动作
}
ES = 1; //允许串口中断
}
‘陆’ STC单片机自带AD代码问题
同学,你的问题有问题
你是想问STC系列单片机的AD问题还是串口问题
你上面这段程序是51单片机串口初始化程序而不是AD程序。
51单片机串口初始化为
void COM_Init(void)
{
SCON = 0x50;
TMOD &= 0x0F;
TMOD |= 0x20;
PCON |= 0x80;
TH1 = 0xFD;
ES=1;EA=1;
TR1 = 1;
TI = 1;
}
AD转换程序
//定义与ADC有关的特殊功能寄存器
sfr ADC_CONTR =0xC5;
sfr ADC_DATA =0xC6;
sfr ADC_LOW2 =0xBE;
sfr P1M0 =0x91;
sfr P1M1 =0x92;
sbit p20 =P2^0;
void STC90CxxAD_delay(int timer) //延时函数
{
while(timer--);
}
int Ad_Change(char channel) //AD转换
{
int AD_Result_Temp = 0 ;
P1 = 0xff; //将P1口置高,为A/D转换作准备
ADC_CONTR = ADC_CONTR|0x80; //1000,0000打开A/D转换电源
P1M0 = 0x03; //0000,0011用于A/D转换的P1.x口,先设为开漏
P1M1 = 0x03; //0000,0011P1.0--P1.1先设为开漏。断开内部上拉电阻
STC90CxxAD_delay(20); //20
ADC_CONTR = ADC_CONTR&0xE0; //1110,0000 清ADC_FLAG,ADC_START位和低3位
ADC_CONTR = ADC_CONTR|(channel); //设置当前通道号
STC90CxxAD_delay(1); //延时使输入电压达到稳定
ADC_DATA = 0; //清A/D转换结果寄存器
ADC_LOW2 = 0;
ADC_CONTR = ADC_CONTR|0x08; //0000,1000ADCS = 1,启动转换
do { ; }
while((ADC_CONTR & 0x10)==0); //0001,0000等待A/D转换结束
ADC_CONTR = ADC_CONTR&0xE7; //1110,0111清ADC_FLAG位,停止A/D转换
AD_Result_Temp = ((AD_Result_Temp|ADC_DATA)<<2)|(ADC_LOW2&0x03);
//保存返回AD转换的 结果
STC90CxxAD_delay(1); //
return AD_Result_Temp;
}
已调试通过,望对你有用
‘柒’ 51单片机stc12c5a代码解释
#include "STC12C5A60.h" //头文件
void Mcu_Init(void); //Mcu_Init()函数声明,声明必须在主函数前,函数名前为void表示无返回值,括号内void表示无行参。(单片机初始化)
sbit out=P2^0; //位定义P2.0,为标识符out
sbit cs=P2^2; //位定义P2.2,为标识符cs
sbit clk=P2^3; //位定义P2.3,为标识符clk
sbit dat=P2^4; //位定义P2.4,为标识符dat
sbit key=P3^3; //位定义P3.3,为标识符key
void long_delay(void); //long_delay函数声明(长延时)
void short_delay(void); //short_delay函数声明(短延时)
typedef unsigned char BYTE; //定义标识符BYTE为unsigned char类型名
void write7279(BYTE Command,BYTE Data); //write7279函数声明,括号内的是形参
unsigned char read7279(unsigned char); //read7279函数声明,括号内的是形参
void send_byte(unsigned char); //send_byte函数声明,括号内的是形参
char tcount=0; //定义char型 变量tcount,并给初值0
unsigned char fh,fl; //定义unsinged char 型变量fh和fl,
int leon; //定义int型变量leon
‘捌’ 如何把STC单片机里的代码读出来
这个需要单片机解密
单片机解密
单片机解密又叫单片机破解,芯片解密,IC解密,但是这严格说来这几种称呼都不科学,但已经成了习惯叫法,我们把CPLD解密,DSP解密都习惯称为单片机解密。单片机只是能装载程序芯片的其中一个类。能烧录程序并能加密的芯片还有DSP,CPLD,PLD,AVR,ARM等。当然具存储功能的存储器芯片也能加密,比如DS2401 DS2501 AT88S0104 DM2602 AT88SC0104D等,当中也有专门设计有加密算法用于专业加密的芯片或设计验证厂家代码工作等功能芯片,该类芯片业能实现防止电子产品复制的目的。
单片机攻击者借助专用设备或者自制设备,利用单片机芯片设计上的漏洞或软件缺陷,通过多种技术手段,就可以从芯片中提取关键信息,获取单片机内程序这就叫单片机解密。
解密过程
揭去芯片封装
侵入型攻击的第一步是揭去芯片封装(简称“开盖”有时候称“开封”,英文为“DECAP”,decapsulation)。
有两种方法可以达到这一目的:
第一种是完全溶解掉芯片封装,暴露金属连线。
第二种是只移掉硅核上面的塑料封装。
第一种方法需要将芯片绑定到测试夹具上,借助绑定台来操作;第二种方法除了需要具备攻击者一定的知识和必要的技能外,还需要个人的智慧和耐心,但操作起来相对比较方便,完全家庭中操作。
芯片上面的塑料可以用小刀揭开,芯片周围的环氧树脂可以用浓硝酸腐蚀掉。热的浓硝酸会溶解掉芯片封装而不会影响芯片及连线。该过程一般在非常干燥的条件下进行,因为水的存在可能会侵蚀已暴露的铝线连接 (这就可能造成解密失败)。
清洗芯片
接着在超声池里先用丙酮清洗该芯片以除去残余硝酸,并浸泡。
寻找保护熔丝的位置并破坏
最后一步是寻找保护熔丝的位置并将保护熔丝暴露在紫外光下。一般用一台放大倍数至少100倍的显微镜,从编程电压输入脚的连线跟踪进去,来寻找保护熔丝。若没有显微镜,则采用将芯片的不同部分暴露到紫外光下并观察结果的方式进行简单的搜索。操作时应用不透明的纸片覆盖芯片以保护程序存储器不被紫外光擦除。将保护熔丝暴露在紫外光下5~10分钟就能破坏掉保护位的保护作用,之后,使用简单的编程器就可直接读出程序存储器的内容。
对于使用了防护层来保护EEPROM单元的单片机来说,使用紫外光复位保护电路是不可行的。对于这种类型的单片机,一般使用微探针技术来读取存储器内容。在芯片封装打开后,将芯片置于显微镜下就能够很容易的找到从存储器连到电路其它部分的数据总线。由于某种原因,芯片锁定位在编程模式下并不锁定对存储器的访问。利用这一缺陷将探针放在数据线的上面就能读到所有想要的数据。在编程模式下,重启读过程并连接探针到另外的数据线上就可以读出程序和数据存储器中的所有信息。
借助显微镜和激光切割机破坏保护熔丝
还有一种可能的攻击手段是借助显微镜和激光切割机等设备来寻找保护熔丝,从而寻查和这部分电路相联系的所有信号线。由于设计有缺陷,因此,只要切断从保护熔丝到其它电路的某一根信号线(或切割掉整个加密电路)或连接1~3根金线(通常称FIB:focused ion beam),就能禁止整个保护功能,这样,使用简单的编程器就能直接读出程序存储器的内容。
虽然大多数普通单片机都具有熔丝烧断保护单片机内代码的功能,但由于通用低档的单片机并非定位于制作安全类产品,因此,它们往往没有提供有针对性的防范措施且安全级别较低。加上单片机应用场合广泛,销售量大,厂商间委托加工与技术转让频繁,大量技术资料外泻,使得利用该类芯片的设计漏洞和厂商的测试接口,并通过修改熔丝保护位等侵入型攻击或非侵入型攻击手段来读取单片机的内部程序变得比较容易。
‘玖’ STC单片机
STC是中国自己产的一种单片机,是宏晶科技生产的单时钟/机器周期(1T)的单片机。
STC单片机是高速/低功耗/抗干扰的新一代8051单片机,指令代码完全兼容传统8051,但速度快8-12倍。内部集成MAX810专用复位电路,2路PWM,8路高速10位A/D转换(250K/S),针对电机控制,
通用I/O口(36/40/44个),复位后为:准双向口/弱上拉(普通8051传统I/O口),可设置成四种模式:准双向口/弱上拉,推挽/强上拉,仅为输入/高阻,开漏,每个I/O口驱动能力均可达到20mA,但整个芯片最大不要超过120mA;
(9)stc单片机代码扩展阅读
STC公司的1T增强系列因他不但和8051指令,管脚完全兼容,而且其片内的具有大容量程序存储器且是FLASH工艺的,如STC12C5A60S2单片机内部就自带高达60K FLASHROM,
这种工艺的存储器用户可以用电的方式擦除、改写。而且STC系列单片机支持串口程序烧写。显而易见,这种单片机对开发设备的要求很低,开发时间也大大缩短。写入单片机内的程序还可以进行加密,可以很好地保护劳动成果。
参考资料来源:网络-STC12C5A60S2