导航:首页 > 操作系统 > stc单片机实例

stc单片机实例

发布时间:2023-02-09 23:00:05

① STC单片机位地址的问题,比如在官网的AD转换例子中有这样的定义:ADC_FLAG EQU 10H怎么是10H啊

你该对着ADC相关的寄存器来看才知道怎么回事,我看过资料,ADC_FLAG是寄存器ADC_CONTR中的一个标志位,ADC_CONTR中每一位的定义是:
ADC_POWER SPEED1 SPEED0 ADC_FLAG ADC_START CHS2 CHS1 CHS0
即ADC_FLAG是这寄存器的第5位,其掩码就是00010000,即0x10。
所以在使用的时候,判断ADC_FLAG是否为1的方法就是if(ADC_CONTR&ADC_FLAG)或if(ADC_CONTR&0x10),如果判断结果为0,即ADC_FLAG为0,反之为1。

所以ADC_FLAG EQU 10H定义的是一个掩码,而不是位地址,你不要搞错了。

② stc12c5a60s2单片机,如何将串口接收的数据写入扩展flash

STC单片机的假EEPROM可以用,但不好玩,以下是将从串口接收到的一个字节数据写入Flash 0单元的应用实例,供参考。最好在内存中开辟一段缓存,将从串口接收到的数据先置于缓存,之后一并写入Flash。
IAP_CONTR = 0x83; //设置操作等待时间

IAP_CMD = 0x03; //扇区擦除命令
IAP_ADDRH = 0; //设置高8位地址
IAP_ADDRL = 0; //设置低8位地址
IAP_TRIG = 0x5A; //芯片规定必须的操作
IAP_TRIG = 0xA5; //芯片规定必须的操作
_nop_();

IAP_CMD = 0x02; //设置写命令
IAP_ADDRH = 0; //设置高8位地址
IAP_ADDRL = 0; //设置低8位地址
IAP_DATA = SBUF; //将串口接收到的一个字节数据写入扩展Flash的0x0000H单元
IAP_TRIG = 0x5A;
IAP_TRIG = 0xA5;

IAP_CONTR = 0; //关闭IAP
IAP_CMD = 0; //关闭命令
IAP_TRIG = 0; //清命令触发寄存器
IAP_ADDRH = 0; //指向非Flash扩展区
IAP_ADDRL = 0;

③ 电流互感器检测在单片机实例应用

电流互感器P1是一个线圈呀,会产生感应电流的,才叫电流互感器吗。感应电流通过电阻R1就产生交流电压。再用二极管D1整流,就得直流电压,后面的电阻电容都是滤波的,这样,送到单片机P1.1的是模拟电压,电压大小与交流220Ⅴ的电流成正比。
编程,这应该是STC单片机,P1.1输入模拟电压,利用内部A/D电路转换数字量就行了。所以,编程,一是完成A/D转换,二是把转换的数字量换算成交流电流的大小,三是显示出交流电流值。

④ STC15F2K60S2单片机PWM调光例子

#include<reg51.h>
#include<intrins.h>

#define uchar unsigned char
#define uint unsigned int

sbit Key1 =P3^2 ; //PWM值增加键
sbit Key3 =P3^3; //PWM值减少键
sbit GND=P3^4;
unsigned char PWM=0x7f ; //赋初值

void delay(uchar z);

/*********************************************************/
void main()
{
PWM=0x7f;
GND=0; //P3.4拉低 组成独立按键
P1=0xff;
TMOD=0x21 ;
TH0=0xfc ; //1ms延时常数
TL0=0x66 ; //频率调节

TH1=PWM ; //脉宽调节
TL1=0 ;

EA=1;
ET0=1;
ET1=1;

TR0=1 ;

while(1)
{
do{
if(PWM!=0xff)
{PWM++ ;delay(10);}
}
while(Key1==0);
do{
if(PWM!=0x02)
{PWM-- ;delay(10);}
}
while(Key3==0);
}
}

/*********************************************************/
// 定时器0中断服务程序 (频率)
/*********************************************************/
void timer0() interrupt 1
{
TR1=0 ;
TH0=0xfc ;
TL0=0x66 ;
TH1=PWM ;
TR1=1 ;
P1=0x00 ; //启动输出
}

/*********************************************************/
// 定时器1中断服务程序
/*********************************************************/
void timer1() interrupt 3
{
TR1=0 ;
P1=0xff ; //结束输出
}

/*********************************************************/

/*********************************************************/
// 延时子程序
/*********************************************************/
void delay(uchar z)

{
uchar i ;
while(z--)
{
for(i = 0 ; i < 120 ; i++) ;
}
}

/*********************************************************/

⑤ STC单片机初始化方法怎么个初始化在主程序上调用吗给个实例,谢谢

void main(void)
{
SysInit(); //可以在这初试化
while(1)
{;}
}

⑥ 怎么以stc单片机为例编写一个LED指示灯闪烁工程。

我的个天,不能让你家帮你作作业吧。
给个框架和思路吧。LED二极管正极串一个限流电阻接在+5V电源上,负极接在MCU一个管脚上,如P20,如果灯不够亮,可以加个三极管放大电流。
程序思路:
main(void)
{
while(1)
{
延时
P20=~P20
//P20取反
点亮和熄灭LED
}
}

阅读全文

与stc单片机实例相关的资料

热点内容
汉语词典pdf下载 浏览:349
android公网ip 浏览:611
要塞1地图放哪个文件夹 浏览:848
凡科建站怎么弄服务器 浏览:939
苹果手机怎么设置app播放 浏览:202
下载网站源码用什么浏览器 浏览:241
六线谱pdf 浏览:156
linuxmysqlsock 浏览:239
人教版数学pdf下载 浏览:460
文档安全加密系统 浏览:491
数控铣床编程简单数字 浏览:788
编程电缆如何重启 浏览:121
myqq命令行发消息 浏览:365
日产逍客怎么使用app升窗 浏览:503
安卓系统怎么快速删除微信内容 浏览:653
csharppython 浏览:409
程序员脖子按摩仪 浏览:563
小米桌面文件夹乱码怎么回事 浏览:858
点歌台app怎么连接 浏览:318
大学电脑编程学什么好 浏览:348