导航:首页 > 操作系统 > stc单片机c语言

stc单片机c语言

发布时间:2022-07-05 02:22:51

❶ stc单片机如何将IO口设为强推挽输出C程序怎么设置比如我设P1.1口为强推挽输出高手指教一下

1、首先在电脑上打开keil软件,如下图所示。

❷ 单片机C语言程序里P0M0,P0M1等等的是什么意思呢

你看到的程序应该是用在STC单片机上的,因为STC单片机的P0,P1,P2,P3口可以设置成四种工作模式,即开机处于的准双向口,推挽输出,高阻输入,开漏输出这四种。如果需要设置成其余的3种,就要通过对各自配置寄存器来设置的,你的P0M0,P0M1就对P0进行设置的,同样有P1M0,P1M1是对P1口进行设置的,以此类推。

❸ stc单片机c语言编程

任何变量名不要命名为a或acc,或避免与51的保留寄存器发生冲突。

❹ STC单片机的秒表设计c语言怎么写,要求第一次按下STOP开始计时,当再次按下STOP时,秒表为计

STOP按下一次K++;
if(CLEAR==0) {K=0;T=0;} 这个要写在计时器中断程序里
if(K==0)不计时
if(K==1)启动计时器开始计时 设计时时间为T
if(K==2)计数器停止计时 这三行写在主程序死循环里

再加上显示程序就可以了

❺ stc单片机与avr单片机C语句有什么不同

(1)STC单片机支持微操作,而AVR单片机不支持微操作指令,对某一为操作的话,需要通过,“按位与、按位或”C语言指令来完成;
(2)STC单片机的每个引脚只有两个寄存器,而AVR单片机每个引脚都有三个寄存器,因此每次对IO口操作,都学要对引脚寄存器从新配置,这也是两单片机的不同

❻ 如何用IO口模拟I2C来实现两个STC单片机之间的通讯,求C语言写法

这是我写的模拟程序,只有一个发送函数和一个接收函数,EP为接收标志位,发送没有标志位,通过外部中断来发送起始信号,无应答与非应答,无结束信号,实测可以正常收发数据
#ifndef _IOPORTSEND_H__
#define _IOPORTSEND_H__
#include<reg52.h>
unsigned char DAT,EP=0;//可以把DAT当作串口中的SBUF,主机发送完后接收机从DAT提取数据
sbit flag = P3^3;//外部中断口
sbit ok = P2^7;//起始信号发送口
sbit PCL = P2^6;//时钟线
sbit PDA = P2^5;//数据线
void delay() //延时函数控制波特率
{
unsigned char a,b;
for(b=3;b>0;b--)
for(a=13;a>0;a--);
}
void PortInit()//中断配置
{
EA=1;
EX1=1;
IT1=1;
}
void SendPort(unsigned char dat)//发送函数
{
unsigned char i;
PCL=0;
ok=1;//通过ok来启动接收机的中断
ok=0;
for(i=0;i<8;i++)//开始发送数据
{
PCL=0;
delay();
if(dat&0x80)
PDA=1;
else
PDA=0;
PCL=1;
delay();
dat<<=1;
}
PCL=0;
delay();
ok=1;//ok置1以便下次发送时启动中断
PCL=1;//发送完毕释放时钟线与数据线
PDA=1;
}
void ReadPort()interrupt 2//接收函数,在中断函数中接收数据
{
unsigned char i;
static unsigned int b;
PCL=1;
PDA=1;//防止接收机的PCL口和PDA口影响数据的接收
for(i=0;i<8;i++)//开始接收数据
{
DAT<<=1;
while(PCL==0);
b=0;
while(PCL==1)
{
b++;
if(b==1)
if(PDA)
DAT|=0x01;
}
}
EP=1;//接收完毕后置EP为1,需要在其他函数中清零
}
#endif

❼ 跪求:STC单片机C语言编程方面的书籍 各位大哥大姐,看到了就帮忙回复一下吧

有一本叫做《手把手教你学单片机》,挺适合初级人员的哦!
后面还有郭天祥的《新概念51单片机C语言教程》,并且那个视屏特别好,讲的很仔细,假如是一个入门者,相当推荐!!!
其他的,倒没什么了,楼主真心想学习好,就多做吧,我们学校都是这种模式,一题目练习新手的!

❽ 用c语言为单片机STC12C2052写一段简单的延时程序!

下面几个是单片机的延时程序(包括asm和C程序,都是我在学单片机的过程中用到的),在单片机延时程序中应考虑所使用的晶振的频率,在51系列的单片机中我们常用的是11.0592MHz和12.0000MHz的晶振,而在AVR单片机上常用的有8.000MHz和4.000MH的晶振所以在网上查找程序时如果涉及到精确延时则应该注意晶振的频率是多大。
软件延时:(asm)
晶振12MHZ,延时1秒
程序如下:
DELAY:MOV
72H,#100
LOOP3:MOV
71H,#100
LOOP1:MOV
70H,#47
LOOP0:DJNZ
70H,LOOP0
NOP
DJNZ
71H,LOOP1
MOV
70H,#46
LOOP2:DJNZ
70H,LOOP2
NOP
DJNZ
72H,LOOP3
MOV
70H,#48
LOOP4:DJNZ
70H,LOOP4
定时器延时:
晶振12MHZ,延时1s,定时器0工作方式为方式1
DELAY1:MOV
R7,#0AH
;;晶振12MHZ,延时0.5秒
AJMP
DELAY
DELAY2:MOV
R7,#14H
;;晶振12MHZ,延时1秒
DELAY:CLR
EX0
MOV
TMOD,#01H
;设置定时器的工作方式为方式1
MOV
TL0,#0B0H
;给定时器设置计数初始值
MOV
TH0,#3CH
SETB
TR0
;开启定时器
HERE:JBC
TF0,NEXT1
SJMP
HERE
NEXT1:MOV
TL0,#0B0H
MOV
TH0,#3CH
DJNZ
R7,HERE
CLR
TR0
;定时器要软件清零
SETB
EX0
RET
C语言延时程序:
10ms延时子程序(12MHZ)
void
delay10ms(void)
{
unsigned
char
i,j,k;
for(i=5;i>0;i--)
for(j=4;j>0;j--)
for(k=248;k>0;k--);
}
1s延时子程序(12MHZ)
void
delay1s(void)
{
unsigned
char
h,i,j,k;
for(h=5;h>0;h--)
for(i=4;i>0;i--)
for(j=116;j>0;j--)
for(k=214;k>0;k--);
}
200ms延时子程序(12MHZ)
void
delay200ms(void)
{
unsigned
char
i,j,k;
for(i=5;i>0;i--)
for(j=132;j>0;j--)
for(k=150;k>0;k--);
}
500ms延时子程序程序:
(12MHZ)
void
delay500ms(void)
{
unsigned
char
i,j,k;
for(i=15;i>0;i--)
for(j=202;j>0;j--)
for(k=81;k>0;k--);
}
下面是用了8.0000MHZ的晶振的几个延时程序(用定时0的工作模式1):
(1)延时0.9MS
void
delay_0_9ms(void)
{
TMOD=0x01;
/*定时器0工作在模式1下(16位计数器)*/
TH0=0xfd;
TL0=0xa8;
TR0=1;
/*启动定时器*/
while(TF0==0);
TR0=0;
}
(2)延时1MS
void
delay_1ms(void)
{
TMOD=0x01;
/*定时器0工作在模式1下(16位计数器)*/
TH0=0xfd;
TL0=0x65;
TR0=1;
/*启动定时器*/
while(TF0==0);
TR0=0;
}
(3)延时4.5ms
void
delay_4_5ms(void)
{
TMOD=0x01;
/*定时器0工作在模式1下(16位计数器)*/
TH0=0xf4;
TL0=0x48;
TR0=1;
/*启动定时器*/
while(TF0==0);
TR0=0;
}

❾ STC 89C51,单片机C语言程序,P10输出PWM方波

串口还是P10?我下面贴出P10输出PWM的产生代码,希望对你能有帮助。
#include
# t 10000/100 //修改10000更改周期 单位us T(us)=10^6/f(hz) 至少10000us
# Duty_cycle 10 ///更改此更改占空比 0-100
unsigned char percent=0;
sbit work_pin P1^0;
void Timer0Init() //定时器0初始化
{
TMOD|=0X01;//选择为定时器0模式,工作方式1,仅用TR0打开启动。
TH0=0xff;
TL0=0x9c;
ET0=1;//打开定时器0中断允许
EA=1;//打开总中断
TR0=1;//打开定时器
}
void PWM_work() interrupt 1
{
TH0=0xff;
TL0=0c9c;
percent++;
if(percent<=Duty_cycle*t/100)
{
work_pin=1;
if(percent>t) percent=0;
}
else work_pin=0;
}
void main()
{
Timer0Init();
while(1);
}

❿ STC51单片机C语言开启蜂鸣器

#include<reg52.h>
sbitbeep=P0^4;

voidmain()
{

beep=0;
while(1);
}

试试这个怎样,单片机在执行完程序之后会回到初始状态,然后再重新执行程序,所以蜂鸣器就会反复的开和关,听起来声音会小很多;加个while(1)死循环,让程序一直保持在beep=0的状态。

阅读全文

与stc单片机c语言相关的资料

热点内容
堵车如何缓解压力 浏览:15
喜鹊快贷app怎么了 浏览:263
海龟编辑器积木编程怎么安装 浏览:185
程序员理发店生意怎么样 浏览:603
程序员罗技 浏览:180
软考初级程序员课程2021下载 浏览:491
杭州程序员奶奶 浏览:880
不听命令造成错误 浏览:981
kool系统源码 浏览:610
流氓app在哪里看 浏览:98
域名购买了怎么指向服务器 浏览:121
安卓手机如何让照片颜色反转 浏览:859
怎么下载卓睿安手机版 浏览:514
h3crange命令 浏览:468
php前景和python 浏览:338
php压缩图片内存大小 浏览:495
在哪里可以查看云服务器的信息 浏览:70
python读取非txt文件 浏览:799
艾莫迅用什么编程软件好 浏览:227
android文件存储读取 浏览:214