当前位置:首页 » 编程语言 » 单片机c语言编程例

单片机c语言编程例

发布时间: 2024-08-26 12:13:51

⑴ 单片机题目,用c语言,求助!!

单片机题目,用四位一体共阴数码管,P0口输出段码,P2口输出位码。用定时器T0定时50ms,采用中断方式,对中断计数,中断20次就为1秒,计数值加一。三个独立按键接在P3.5、P3.6、P3.7上。仿真图和效果见下图。

⑵ 求解一道单片机C语言编程题,急

#include"AT89X52.h"

sbit BUTTON = P1^1;
sbite LED = P1^0;
unsigned int reg;
void main(void)
{
while(1)
{
if (!BUTTON)
{
reg= 5000;
while(--reg);
if (!BUTTON)
{
LED = ~LED;
while(!BUTTON);
}
}
}
}

⑶ 51单片机使用T0和T1外部脉冲计数,C语言如何编程

1、使用T0和T1外部脉冲计数,控制两个电机,到1700个脉冲电机停止,
--统计脉冲个数,用外部中断更好。
--T0和T1,留着定时用。
用四个按键控制,按键1控制电机正转,按键2控制电机反转,按键3控制电机1正转,按键4控制电机2正转。


2、例程:

#include<reg51.h>
sbitk1=?;//自己定义
sbitk2=?
sbitk3=?
sbitk4=?
sbitDIAN1=?
sbitDIAN2=?
sbitDIAN3=?
sbitDIAN4=?
sbitSEN1=?
sbitSEN2=?
voiddelay(unsignedintx)
{
unsignedintm,n;
for(m=x;m>0;m--)for(n=115;n>0;n--);
}
voidmain(void)
{
TMOD=0x55;
IE=0x8a;
while(1){
if(!k1){
delay(10);
if(!k1){
while(!k1);
TH0=(65536-1700)/256;
TL0=(65536-1700)%256;
SEN1=0;
DIAN1=0;DIAN2=1;
SEN1=1;
TR0=1;
}
}
if(!k2){
delay(10);
if(!k2){
while(!k2);
TH0=(65536-1700)/256;
TL0=(65536-1700)%256;
SEN1=0;
DIAN1=1;DIAN2=0;
SEN1=1;
TR0=1;
}
}
if(!k3){
delay(10);
if(!k3){
while(!k3);
TH1=(65536-1700)/256;
TL1=(65536-1700)%256;
SEN2=0;
DIAN3=0;DIAN4=1;
SEN2=1;
TR1=1;
}
}
if(!k4){
delay(10);
if(!k4){
while(!k4);
TH1=(65536-1700)/256;
TL1=(65536-1700)%256;
SEN2=0;
DIAN3=1;DIAN4=0;
SEN2=1;
TR1=1;
}
}
}
}

⑷ 求各位大神解决单片机程序C语言代码跟解释

11.程序如下:
#include<reg52.h>
//包含单片机寄存器的头文件
#include<intrins.h>
#define
uchar
unsigned
char
//定义一下方便使用
#define
uint
unsigned
int
//定义一下方便使用
uchar
num,num1;
uchar
code
table[]={
//数字编码0~9
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90};
void
main()
//主程序
{
TMOD=0x01;
//定时器T0,工作方式1
TH0=(65536-50000)/256;
//装载初值,中断一次50ms
TL0=(65536-50000)%256;
EA=1;
//开总中断
ET0=1;
//开T0中断
TR0=1;
//启动定时器
while(1)
//大循环
{
P2=0xaa;
//数码管位选,10101010b
P0=table[num];
//段选信号
}
}
void
T0_time()
interrupt
1
//中断函数
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
num1++;
if(num1==20)
//中断20次为1秒
{num1=0;
num++;
//每1秒加1
if(num==10)
//数码管显示的编码0~9
ET0=0;
for(int
i=0;i<10000;i++)
{
P1=0xff;
delay();
P1=0xfe;
delay();
}
num=0;
}
}
void
delay()();
{
unsigned
char
i;
for(i=20;i>0;i--);
}
12.#include
<reg52.h>
#include
<intrins.h>
#define
uchar
unsigned
char
#define
uint
unsigned
int
void
DelayMS(uint
x)
{
uchar
t;
while(x--)
{
for(t=120;t>0;t--);
}
}
void
main()
{
uchar
i;
P2=0x01;
while(1)
{
for(i=7;i>0;i--)
{
P2=_crol_(P2,1);
DelayMS(150);
}
for(i=7;i>0;i--)
{
P2=_cror_(P2,2);
DelayMS(150);
}
}
}

⑸ 求一个51单片机C语言程序编程

实验内容:单片机甲、乙进行双机串行通信,甲机通过串口控制乙机LED闪烁(如下图所示,要求利用芯片MAX232),双方的晶振频率均为11.0592MHz(波特率为9600kb/s)要求:甲机按开关K1一次,发送字符“A”给乙机,点亮灯D1与D2;按开关K1两次,发送字符“B”给乙机,点亮灯D3与D4;按开关K1三次,发送字符“C”给乙机,全部点亮;按下第四次K1,灯全灭


#include<reg51.h> /*甲机*/

sbit k=P1^0;

sbit P00=P0^0;

sbit P03=P0^3;

unsignedchari,NO;

voidmain(void) /*主函数*/

{

SCON=0x40; /*方式1只发送,不接收*/TMOD=0x20;

TH1=0xfd; /*给定时器T1赋初值,波特率为9600*/

TL1=0xfd;

TR1=1;

k=1;

NO=0;

while(1)

{

if(k==0)

{while(k==0);

NO=(NO+1)%4;

}

switch(NO)

{case0:P0=0xff;

break;

case1:P00=0;P03=1;

SBUF='A';

while(TI==0);

TI=0;

break;

case2:P00=1;

P03=0;

SBUF='B';

while(TI==0);

TI=0;

break;

case3:P00=0;

P03=0;

SBUF='C';

while(TI==0);

TI=0;

break;

}

}

for(i=250;i>0;i--){;} //延时

}

#include<reg51.h> /*乙机*/

sbit k=P1^0;

sbit P00=P0^0;

sbit P03=P0^3;

unsignedcharNO;

voidmain() /*主函数*/

{

SCON=0x50; /*设置串口为方式3,允许接收REN=1*/

TMOD=0x20;

TH1=0xfd; /*给定时器T1赋初值,波特率为9600*/

TL1=0xfd;

TR1=1;

P0=0xff;

while(RI==0);/*检测接收中断标志RI,RI=0,未接收完,则循环等待*/

{RI=0;

switch(SBUF)

{case'A':P00=0;P03=1;

break;

case'B':P00=1;P03=0;

break;

case'C':P00=P03=0;

break;

}

}

}


热点内容
苹果文件夹名字大全 发布:2024-11-25 12:28:03 浏览:589
ipad上b站缓存分屏 发布:2024-11-25 12:27:59 浏览:980
数据库日志文件查看 发布:2024-11-25 12:17:28 浏览:47
腾讯视频明明缓存了看不了 发布:2024-11-25 12:08:01 浏览:181
存储区域网络分布 发布:2024-11-25 12:07:12 浏览:388
安卓怎么用汤不热 发布:2024-11-25 11:49:06 浏览:843
java线程调用 发布:2024-11-25 11:42:45 浏览:844
识地图算法 发布:2024-11-25 11:31:10 浏览:20
杨辉三角c语言程序一维数组 发布:2024-11-25 11:30:30 浏览:214
脚本一般用在什么地方 发布:2024-11-25 11:13:28 浏览:824