导航:首页 > 操作系统 > stc8g系列单片机程序代码

stc8g系列单片机程序代码

发布时间:2023-01-29 14:13:29

Ⅰ 如何将程序代码烧录进STC单片机 详细�0�3

STC 先安装<STC 单片机编程工具>软件到计算机中, 然后进行下面的操作。 以下是烧录程序的主要界面。 烧录过程非常简单, 操作也非常简单。 图中红色的五个大数字就 表示了整个过程。简简单单的五步就可以了(实际上只需 4 步)。 启动本烧录程序后, 第一步就是选择烧录器件。 本烧录软件支持STC 全系列的 51 单片机芯片, 因此, 第一步必须选择相对应的型号。 由于本实验板选用的单片机芯片就是本烧录软 件首次启动默认的型号,所以,本项一般都不需要选择。另外,“ AP Memory”是指该芯片的内存大小和起止地址, 根据器件型号自动更改, 不必 理会。 选择了器件型号, 第二步就应该选择将要被烧录的 HEX 机器码文件。 HEX 文件由单片机开发环境输入、 编辑代码, 最后编绎产生。至于如何产生 HEX 文件, 很多资料也都有介绍, 本板光盘中有详细的说明, 并且提供了多套开发软件(每套都能用) 。 通过对照自学完全可以很快掌握操作。 并且,本实验板光盘也提供了多 种单片机开发环境供大家学习研究。 本光盘中提供了一些例子程序, 大家可以点“open file”按钮, 弹出以下窗口(源程序也 有,但这里不显示),先选择一些例子程序烧录实验。 选好了文件后, 大家可以发现“文件校验和” 中的数据发生了变化, 大家可以通过留意这个数据是否 变化来确 定打开文件是否成功, 或者文件刷 新是否 有更改。 当然, 文件打开后, 会显示在右边的数据区, 大家也可以观查右边数据区是否有更改。不过, 当数据太多时, 更改的地方又很少时, 观查“文件校验和” 会更快更准确。 选好了器件, 选好了文件, 第三步就可以设置串口和串口通信速度了。 串口是一个九针的插座, 老式的鼠标口就是串口。 为了让通信可靠, 我们可以适当的选低一些的速度, 这个串 口线较长时非常重要。 烧录过程中, 如果出现失败, 可以考虑将串口通信速度降低再试, 这是由于机器配置以及当地环境因素决定的, 当环境干扰过大时, 必需选低一点的波特率(即通信速率) 。烧录成功与失败,可以从信息区的提示看出。 选择并设置好串口后(一般不需更改) , 进入第四步, 而这一步基本上不用更改。 设置时钟倍频主要是为了提高工作速度, 设置时钟增益是为了降低电磁幅射。 这些, 对于高级工程人员和最终产品会很有用, 对于初学者来说, 只当没有看见就行了。第五步是最后一步, 点击“Download/下载” , 就可以进入烧录状态。特别 说明 :点击“ Download/ 下载”之前实验板的电源开关必须关闭,使单片 机彻底断电, 点击“Download/下载” 之后才可以使单片机上电,完成 程序的烧录。 注意: 点击“Re-Download/重复下载” 也可以, 这常用于大批量的编程, 不必每次都去点“Download/下载” 。 出现以下图状态时, 给实验板通电就可以完成编程过程(如果实验 板已经通电,则必须关掉电源 1 秒钟再次通电)。 重点注意事项: 注意: 整个烧录过程中(任何过程中) , 不要用手或者导体接触单片机集成电路的引脚或者电路! 这样很可能会永久性的损坏单片机实验板或者集成电路或者电脑主机。 原因: 绝对大多数的电脑没有采取良好的接地措施! 而电脑主机、 显示器的电源电路中,又有电容直接连接到市电, 这个电压和电流经常会达到很高, 当我们触摸电脑机箱后, 有时会感受到明显的电击, 就是这个原因! 另外尽量消除人体的高压静电, 高压静电也可能对 集成电路或者电路已经造成永久性的损坏。 解决方法: 当实验板与电脑连接时, 尽量不要用手接触单片机引脚; 尽量消除人体的高 压静电(实验时保持手有一定的潮湿度,可有效抑制静电产生) 现在就过过瘾吧! 在本光盘中提供了一些例子程序, 并且提供了已经编译好的HEX文件, 立即打开,试着分别烧录试试吧! 同一块集成电路(MCU), 通过不同的源程序代码, 倾刻间表现出不同的功能, 并且可以长期稳定工作, 这就是单片机的魅力所在! 只有懂了单片机, 才能设计开发出更复杂 、更可靠、更稳定的产品! 所以说, 不论学习电子技术多少年, 不论有了多少年电子工作经验, 不论是否会修理电 子产品,如果不懂单片机,就始终低人一等!!! 单片机不难, 采用本站最新S TC 编程、 实验、 开发一体化功能单片机板, 先实践, 后理 论,在书和光盘的帮助下,让你最快速度学会单片机! 仕别三日, 当令人刮目相看! 要实现理想, 从现在做起!

Ⅱ 如下程序:这几句单片机的C语言程序是什么意思

这是stc单片机的IO端口设置方式

1, P0M1 = 0;
P1M1 = 0;
是p1口的P1^0这个口为普通双向输入输出方式,
2, P2M0 = 0XFF;
P2M1 = 0;
设置整个p2口为高阻输入状态
3,
P0M0 = 0XFF;因为P0M1没给出是什么,不好确定P1口为什么状态
看下stc单片机手册就很清楚了

Ⅲ sTc8 pwm调光程序怎么写

下面这个程序是应用在stc上的pwm程序,测试成功
#includesfr CCON =0xD8; //PCA control register
sfr CMOD =0xD9;
sfr CL =0xe9;
sfr CH =0xF9;
sfr CCAP0L=0xea;
sfr CCAP1L=0xeb;
sfr CCAP0H=0xfa;
sfr CCAP1H=0xfb;
sfr CCAPM0=0xda;
sfr CCAPM1=0xdb;

sbit CR=0xde; //位寻址

void main(void)
{
CMOD=0x02; //使用系统时钟,时钟输入源频率fosc/2。PWM频率=fosc/2/256
/************************************
7 6 5 4 3 2 1 0
CIDL - - - cps2 CPS1 CPS0 ECF

CIDL: =0时,空闲模式下PCA计数器继续工作;=1时,空闲模式下PCA计数器停止工作。
CPS2,CPS1,CPS0:PCA计数脉冲选择。010,定时器0的溢出,可以实现可调频率的PWM输出。
ECF: =1时,使能寄存器CCON CF位的中断;=0时,禁止该功能。
***************************************/
CL=0x00;
CH=0x00;
CCAP0L=0xc0; //当CL小于CCAP0L时,输出为低;大于时,输出为高。
CCAP0H=0x7f; //当CL由ff变为00溢出时,CCAP0H装载到CCAP0L中,实现无干扰的更新PWM。
CCAP1L=0xc0; //当CL小于CCAP1L时,输出为低;大于时,输出为高。
CCAP1H=0xc0; //当CL由ff变为00溢出时,CCAP1H装载到CCAP1L中,实现无干扰的更新PWM。
CCAPM0=0X42; //使能PWM模式,PWM0=1,ECOM0=1
CCAPM1=0X42; //使能PWM模式,PWM1=1,ECOM1=1
CR=1; //启动PCA计数器
while(1)
{
CCAP0H=RF4432_TxRxBuf[4]; //此处改变占空比
CCAP1H=RF4432_TxRxBuf[5];
CCAP2H=RF4432_TxRxBuf[6]/2.5;
};
}

Ⅳ 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单片机串口程序

//注意,如您使用的MCU没有那个功能,就不要操作相应的寄存器
//注意,如您使用的MCU没有那那么大的扩展SRAM,就不要操作超过范围的SRAM

#include<reg51.h>
#include<intrins.h>
sfr S2CON = 0x9A;
//S2SM0,S2SM1,S2SM2,S2REN,S2TB8,SRB8,S2TI,S2RI

sfr IE2 = 0xAF;
//X,X,X,X,X,X,ESPI,ES2

sfr S2BUF = 0x9B;

sfr AUXR = 0x8e;
sfr BRT = 0x9c;
sfr IAP_CONTR = 0xC7;
sfr CCON = 0xD8;
sfr CMOD = 0xD9;
sfr CL = 0xE9;
sfr CH = 0xF9;
sfr CCAP0L = 0xEA;
sfr CCAP0H = 0xFA;
sfr CCAPM0 = 0xDA;
sfr CCAPM1 = 0xDB;
sbit CR = 0xDE;
sbit MCU_Start_Led = P1^7;
sbit S2_Interrupt_Receive_Led = P1^4;
//unsigned char self_command_array[4] = {0x22,0x33,0x44,0x55};
#define Self_Define_ISP_Download_Command 0x22
#define RELOAD_COUNT 0xfb //18.432MHz,12T,SMOD=0,9600bps

void serial_port_one_initial();
void send_UART_one(unsigned char);
void UART_one_Interrupt_Receive(void);

void serial_port_two_initial();
void send_UART_two(unsigned char);
void UART_two_Interrupt_Receive(void);

void soft_reset_to_ISP_Monitor(void);
void delay(void);
void display_MCU_Start_Led(void);
void send_PWM(void);

void main(void)
{
unsigned int array_point = 0;
unsigned char xdata Test_array_one[512] =
{
0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07,
0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f,
0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17,
0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27,
0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
0x30, 0x31, 0x32, 0x33, 0x34, 0x35, 0x36, 0x37,
0x38, 0x39, 0x3a, 0x3b, 0x3c, 0x3d, 0x3e, 0x3f,
0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47,
0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
0x50, 0x51, 0x52, 0x53, 0x54, 0x55, 0x56, 0x57,
0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5e, 0x5f,
0x60, 0x61, 0x62, 0x63, 0x64, 0x65, 0x66, 0x67,
0x68, 0x69, 0x6a, 0x6b, 0x6c, 0x6d, 0x6e, 0x6f,
0x70, 0x71, 0x72, 0x73, 0x74, 0x75, 0x76, 0x77,
0x78, 0x79, 0x7a, 0x7b, 0x7c, 0x7d, 0x7e, 0x7f,
0x80, 0x81, 0x82, 0x83, 0x84, 0x85, 0x86, 0x87,
0x88, 0x89, 0x8a, 0x8b, 0x8c, 0x8d, 0x8e, 0x8f,
0x90, 0x91, 0x92, 0x93, 0x94, 0x95, 0x96, 0x97,
0x98, 0x99, 0x9a, 0x9b, 0x9c, 0x9d, 0x9e, 0x9f,
0xa0, 0xa1, 0xa2, 0xa3, 0xa4, 0xa5, 0xa6, 0xa7,
0xa8, 0xa9, 0xaa, 0xab, 0xac, 0xad, 0xae, 0xaf,
0xb0, 0xb1, 0xb2, 0xb3, 0xb4, 0xb5, 0xb6, 0xb7,
0xb8, 0xb9, 0xba, 0xbb, 0xbc, 0xbd, 0xbe, 0xbf,
0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7,
0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf,
0xd0, 0xd1, 0xd2, 0xd3, 0xd4, 0xd5, 0xd6, 0xd7,
0xd8, 0xd9, 0xda, 0xdb, 0xdc, 0xdd, 0xde, 0xdf,
0xe0, 0xe1, 0xe2, 0xe3, 0xe4, 0xe5, 0xe6, 0xe7,
0xe8, 0xe9, 0xea, 0xeb, 0xec, 0xed, 0xee, 0xef,
0xf0, 0xf1, 0xf2, 0xf3, 0xf4, 0xf5, 0xf6, 0xf7,
0xf8, 0xf9, 0xfa, 0xfb, 0xfc, 0xfd, 0xfe, 0xff,
0xff, 0xfe, 0xfd, 0xfc, 0xfb, 0xfa, 0xf9, 0xf8,
0xf7, 0xf6, 0xf5, 0xf4, 0xf3, 0xf2, 0xf1, 0xf0,
0xef, 0xee, 0xed, 0xec, 0xeb, 0xea, 0xe9, 0xe8,
0xe7, 0xe6, 0xe5, 0xe4, 0xe3, 0xe2, 0xe1, 0xe0,
0xdf, 0xde, 0xdd, 0xdc, 0xdb, 0xda, 0xd9, 0xd8,
0xd7, 0xd6, 0xd5, 0xd4, 0xd3, 0xd2, 0xd1, 0xd0,
0xcf, 0xce, 0xcd, 0xcc, 0xcb, 0xca, 0xc9, 0xc8,
0xc7, 0xc6, 0xc5, 0xc4, 0xc3, 0xc2, 0xc1, 0xc0,
0xbf, 0xbe, 0xbd, 0xbc, 0xbb, 0xba, 0xb9, 0xb8,
0xb7, 0xb6, 0xb5, 0xb4, 0xb3, 0xb2, 0xb1, 0xb0,
0xaf, 0xae, 0xad, 0xac, 0xab, 0xaa, 0xa9, 0xa8,
0xa7, 0xa6, 0xa5, 0xa4, 0xa3, 0xa2, 0xa1, 0xa0,
0x9f, 0x9e, 0x9d, 0x9c, 0x9b, 0x9a, 0x99, 0x98,
0x97, 0x96, 0x95, 0x94, 0x93, 0x92, 0x91, 0x90,
0x8f, 0x8e, 0x8d, 0x8c, 0x8b, 0x8a, 0x89, 0x88,
0x87, 0x86, 0x85, 0x84, 0x83, 0x82, 0x81, 0x80,
0x7f, 0x7e, 0x7d, 0x7c, 0x7b, 0x7a, 0x79, 0x78,
0x77, 0x76, 0x75, 0x74, 0x73, 0x72, 0x71, 0x70,
0x6f, 0x6e, 0x6d, 0x6c, 0x6b, 0x6a, 0x69, 0x68,
0x67, 0x66, 0x65, 0x64, 0x63, 0x62, 0x61, 0x60,
0x5f, 0x5e, 0x5d, 0x5c, 0x5b, 0x5a, 0x59, 0x58,
0x57, 0x56, 0x55, 0x54, 0x53, 0x52, 0x51, 0x50,
0x4f, 0x4e, 0x4d, 0x4c, 0x4b, 0x4a, 0x49, 0x48,
0x47, 0x46, 0x45, 0x44, 0x43, 0x42, 0x41, 0x40,
0x3f, 0x3e, 0x3d, 0x3c, 0x3b, 0x3a, 0x39, 0x38,
0x37, 0x36, 0x35, 0x34, 0x33, 0x32, 0x31, 0x30,
0x2f, 0x2e, 0x2d, 0x2c, 0x2b, 0x2a, 0x29, 0x28,
0x27, 0x26, 0x25, 0x24, 0x23, 0x22, 0x21, 0x20,
0x1f, 0x1e, 0x1d, 0x1c, 0x1b, 0x1a, 0x19, 0x18,
0x17, 0x16, 0x15, 0x14, 0x13, 0x12, 0x11, 0x10,
0x0f, 0x0e, 0x0d, 0x0c, 0x0b, 0x0a, 0x09, 0x08,
0x07, 0x06, 0x05, 0x04, 0x03, 0x02, 0x01, 0x00
};
unsigned char i = 0;

serial_port_one_initial(); //串口1初始化
// serial_port_two_initial(); //串口2初始化
display_MCU_Start_Led(); //点亮发光二极管表示单片机开始工作

// send_UART_two(0x55); //串口2发送数据表示单片机串口正常工作
// send_UART_two(0xaa); //串口2发送数据表示单片机串口正常工作
/*
for(array_point=0; array_point<512; array_point++)
{
send_UART_two(Test_array_one[array_point]);
}
*/
send_UART_one(0x34); //串口1发送数据表示单片机串口正常工作
send_UART_one(0xa7); //串口1发送数据表示单片机串口正常工作

for(array_point=0; array_point<512; array_point++)
{
send_UART_one(Test_array_one[array_point]);
}

// send_PWM(); //6kHz PWM, 50% ty
while(1);
}
void serial_port_one_initial()
{
SCON = 0x50; //0101,0000 8位可变波特率,无奇偶校验位
// TMOD = 0x21; //0011,0001 设置顶时器1为8位自动重装计数器
// TH1 = RELOAD_COUNT; //设置定时器1自动重装数
// TL1 = RELOAD_COUNT;
// TR1 = 1; //开定时器1
BRT = RELOAD_COUNT;
// BRTR = 1, S1BRS = 1, EXTRAM = 1 ENABLE EXTRAM
AUXR = 0x11; // T0x12,T1x12,UART_M0x6,BRTR,S2SMOD,BRTx12,EXTRAM,S1BRS
ES = 1; //允许串口中断
EA = 1; //开总中断
}

void serial_port_two_initial()
{
//sfr SCON = 0x98;
//SM0,SM1,SM2,REN,TB8,RB8,TI,RI

//sfr S2CON = 0x9A;
//S2SM0,S2SM1,S2SM2,S2REN,S2TB8,S2RB8,S2TI,S2RI
//sfr S2BUF = 0x9B;
//sfr IE2 = 0xAF;
//X,X,X,X,X,X,ESPI,ES2

S2CON = 0x50; //0101,0000 8位可变波特率,无奇偶校验位,允许接收

BRT = RELOAD_COUNT;
// BRTR = 1, S1BRS = 1, EXTRAM = 0 ENABLE EXTRAM
AUXR = 0x11; // T0x12,T1x12,UART_M0x6,BRTR,S2SMOD,BRTx12,EXTRAM,S1BRS
// ES = 1; //允许串口1中断
// ES2 = 1
IE2 = 0x01; //允许串口2中断,ES2=1
EA = 1; //开总中断
}

void send_UART_one(unsigned char i)
{
ES = 0; //关串口中断
TI = 0; //清零串口发送完成中断请求标志
SBUF = i;
while(TI ==0); //等待发送完成
TI = 0; //清零串口发送完成中断请求标志
ES = 1; //允许串口中断
}

void send_UART_two(unsigned char i)
{
//sfr SCON = 0x98;
//SM0,SM1,SM2,REN,TB8,RB8,TI,RI

//sfr S2CON = 0x9A;
//S2SM0,S2SM1,S2SM2,S2REN,S2TB8,S2RB8,S2TI,S2RI
//sfr S2BUF = 0x9B;
//sfr IE2 = 0xAF;
//X,X,X,X,X,X,ESPI,ES2

unsigned char temp = 0;

// ES = 0; //关串口1中断
IE2 = 0x00; //关串口2中断,es2=0
// TI = 0; //清零串口1发送完成中断请求标志
S2CON = S2CON & 0xFD; //B'11111101,清零串口2发送完成中断请求标志
// SBUF = i;
S2BUF = i;
// while(TI ==0); //等待发送完成
do
{
temp = S2CON;
temp = temp & 0x02;
}while(temp==0);

// TI = 0; //清零串口发送完成中断请求标志
S2CON = S2CON & 0xFD; //B'11111101,清零串口2发送完成中断请求标志
// ES = 1; //允许串口1中断
// ES2 = 1
IE2 = 0x01; //允许串口2中断,ES2=1
}

void UART_one_Interrupt_Receive(void) interrupt 4
{
unsigned char k = 0;
if(RI==1)
{
RI = 0;
k = SBUF;
if(k==Self_Define_ISP_Download_Command) //是自定义下载命令
{
delay(); //延时1秒就足够了
delay(); //延时1秒就足够了
soft_reset_to_ISP_Monitor(); //软复位到系统ISP监控区
}
send_UART_one(k+1);
}
else
{
TI = 0;
}
}

void UART_two_Interrupt_Receive(void) interrupt 8
{
//sfr SCON = 0x98;
//SM0,SM1,SM2,REN,TB8,RB8,TI,RI

//sfr S2CON = 0x9A;
//S2SM0,S2SM1,S2SM2,S2REN,S2TB8,S2RB8,S2TI,S2RI
//sfr S2BUF = 0x9B;
//sfr IE2 = 0xAF;
//X,X,X,X,X,X,ESPI,ES2

unsigned char k = 0;
k = S2CON ;
k = k & 0x01;
//if(S2RI==1)
if(k==1)
{
//RI = 0;
S2CON = S2CON & 0xFE; //1111,1110
S2_Interrupt_Receive_Led = 0;

k = S2BUF;
if(k==Self_Define_ISP_Download_Command) //是自定义下载命令
{

delay(); //延时1秒就足够了
delay(); //延时1秒就足够了

soft_reset_to_ISP_Monitor(); //软复位到系统ISP监控区
}
send_UART_two(k+1);
}
else
{
//TI = 0;
S2CON = S2CON & 0xFD; //1111,1101
}
}
void soft_reset_to_ISP_Monitor(void)
{
IAP_CONTR = 0x60; //0110,0000 软复位到系统ISP监控区
}
void delay(void)
{
unsigned int j = 0;
unsigned int g = 0;
for(j=0;j<5;j++)
{
for(g=0;g<60000;g++)
{
_nop_();
_nop_();
_nop_();
_nop_();
_nop_();
}
}
}

void display_MCU_Start_Led(void)
{
//sbit MCU_Start_Led = P1^7;
unsigned char i = 0;
for(i=0;i<1;i++)
{
MCU_Start_Led = 0; //顶亮MCU开始工作指示灯
delay();
MCU_Start_Led = 1; //熄灭MCU开始工作指示灯
delay();
MCU_Start_Led = 0; //顶亮MCU开始工作指示灯
}
}

void send_PWM(void)
{
CMOD = 0x00; // CIDL - - - - CPS1 CPS0 ECF Setup PCA Timer
// CPS1 CPS0 = 00, Fosc/12 is PCA/PWM clock
// 18432000/12/256 = 6000
CL = 0x00;
CH = 0x00;
CCAP0L = 0x80; //Set the initial value same as CCAP0H
CCAP0H = 0x80; //50% Duty Cycle
CCAPM0 = 0x42; //0100,0010 Setup PCA mole 0 in 8BIT PWM, P3.7
CR = 1; //启动 PCA/PWM 定时器
}

Ⅵ 求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单片机里的代码读出来

这个需要单片机解密

单片机解密
单片机解密又叫单片机破解,芯片解密,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),就能禁止整个保护功能,这样,使用简单的编程器就能直接读出程序存储器的内容。
虽然大多数普通单片机都具有熔丝烧断保护单片机内代码的功能,但由于通用低档的单片机并非定位于制作安全类产品,因此,它们往往没有提供有针对性的防范措施且安全级别较低。加上单片机应用场合广泛,销售量大,厂商间委托加工与技术转让频繁,大量技术资料外泻,使得利用该类芯片的设计漏洞和厂商的测试接口,并通过修改熔丝保护位等侵入型攻击或非侵入型攻击手段来读取单片机的内部程序变得比较容易。

Ⅷ stc8g1k17a,如何烧录程序

方法如下:
单片机板和转换板连线对应连接好,如发现无法通讯,可调整2、3的连线。
1、地线----地线。
2、TXD-----RXD。
3、RXD-----TXD转换板由于PC供电,指对外提供很小的供电能力,建议单片机板用单独的电源供电,切记不能外接电源和转换板同时对单片机板供电,否则会烧设备或计算机的危险。
硬件连接正常后就是通过STC专门的烧录软件进行烧录了。

Ⅸ 单片机RGB调色程序 要求基于PWM(STC系列单片机c语言)可以实现至少60种颜色调节,有多种模

选用STC12C56XX的单片机,利用三路PWM来调色就简单了,再多的颜色无非是把表格做的大点,利用查表法,来获取颜色的PWM寄存器的初装值就可以了。

Ⅹ STC8A8K64S4A12单片机程序

这个可以有,是51的,用到STC8A8K64S4A12上应该不成问题。
#include <STC89.H>
unsigned char tmp;
sbit shebei1=P1^0;//定义控制设备的IO口
sbit shebei2=P1^1;
sbit shebei3=P1^2;
sbit shebei4=P1^3;
sbit shebei5=P1^4;
sbit shebei6=P1^5;
void main()
{
TMOD = 0x20; // 定时器1工作于8位自动重载模式, 用于产生波特率
TH1 = 0xFD; // 波特率9600
TL1 = 0xFD;
SCON = 0x50; // 设定串行口工作方式
PCON &= 0xef; // 波特率不倍增
TR1 = 1; // 启动定时器1
IE = 0x0; // 禁止任何中断
while(1)
{
if(RI) // 是否有数据到来
{
RI = 0;// 清接收标志
tmp = SBUF; // 暂存接收到的数据
switch(tmp )
{
case 0x22:shebei1=0;break;//关设备1
case 0x33:shebei1=1;break;//开设备1
case 0x44:shebei2=0;break;
case 0x55:shebei2=1;break;
case 0x66:shebei3=0;break;
case 0x77:shebei3=1;break;
case 0x88:shebei4=0;break;
case 0x99:shebei4=1;break;
// case 0xaa:shebei5=0;break;
// case 0xbb:shebei5=1;break;
// case 0xcc:shebei6=0;break;
// case 0xdd:shebei6=1;break;
case 0x17:shebei5=0;break;
case 0x18:shebei5=1;break;
case 0x19:shebei6=0;break;
case 0x20:shebei6=1;break;
}

}
}
}
void delayms(unsigned char ms)
// 延时子程序
{
unsigned char i;
while(ms--)
{
for(i = 0; i < 120; i++);
}
}

阅读全文

与stc8g系列单片机程序代码相关的资料

热点内容
手机文档解压之后解压包去哪儿了 浏览:921
java中网络编程重要吗 浏览:683
如何登录别人的服务器 浏览:626
调度系统软件python 浏览:205
微信大转盘抽奖源码 浏览:497
压缩机损坏的表现 浏览:862
同步数据服务器怎么用 浏览:634
163邮箱服务器的ip地址 浏览:50
服务器跟域是什么 浏览:128
rails启动命令 浏览:465
logistic命令怎么用 浏览:738
c语言点滴pdf 浏览:747
linuxrtc编程 浏览:258
linux打包并压缩命令 浏览:644
aes加密的证书格式 浏览:99
oracledbcalinux 浏览:844
酬勤任务app怎么被特邀 浏览:199
android应用文件夹 浏览:1002
平面设计法则pdf 浏览:339
3d圆角命令怎么用 浏览:569