单片机c语言代码
⑴ 单片机求一个串口实验的c语言程序代码
#include <AT89X51.H>//单片机51头文件,存放着单片机的寄存器
unsigned char dat; //用于存储单片机接收发送缓冲寄存器SBUF里面的内容
sbit gewei=P2^2; //个位选通定义
sbit shiwei=P2^3; //十位选通定义
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67,0x77,0x7c,0x39,0x5e,0x79,0x71};
//{0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x67,};// 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
void Delay(unsigned int tc) //延时程序
{
while( tc != 0 )
{unsigned int i;
for(i=0; i<100; i++);
tc--;}
}
void LED() //LED显示接收到的数据
{
shiwei=0;
P0=~table[dat/16];
Delay(8);
shiwei=1;
gewei=0;
P0=~table[dat%16];
Delay(5);
gewei=1;
}
void Init_Com(void)//功能:串口初始化,波特率9600,方式1
{
TMOD = 0x20;
PCON = 0x00;
SCON = 0x50;
TH1 = 0xFd;
TL1 = 0xFd;
TR1 = 1;
}
void main()//主程序功能:实现接收数据并把接收到的数据原样发送回去///////
{
Init_Com();//串口初始化
// P1=0xf0;
while(1)
{
if ( RI ) //扫描判断是否接收到数据,
{
dat = SBUF; //接收数据SBUF赋与dat
RI=0; //RI清零。
SBUF = dat; //在原样把数据发送回去
}
LED(); //显示接收到的数据
}
}
⑵ 单片机C语言代码问题
看来是你还没理解好定时器。
定时器是单片机的一个模块,用的时候,我们给它配置好参数,启动之后就可以不管了,它可以独立于主程序流程而运行。正确的使用如下:
voidmain(void)
{
EA=1;//打开总中断
ET0=1;//打开定时器/计数器T0中断
TMOD=0x01;
TH0=(65536-50000)/256;//50ms一次定时器中断
TL0=(65536-50000)%256;
TR0=1;
D1=0;
while(1);
}
voidT0Int()interrupt1
{
TH0=(65536-50000)/256;//50ms一次定时器中断,需要初始化初值。
TL0=(65536-50000)%256;
D1=~D1;
}
⑶ 单片机c语言代码
先说左移,左移就是把一个数的所有位都向左移动若干位,在C中用>5(假设字长为8位),则得到的是 11111101 总之,在C中,左移是逻辑/算术左移(两者完全相同),右移是算术右移,会保持符号位不变.实际应用中可以根据情况用左/右移做快速的乘/除运算,这样...
⑷ 这段但单片机C语言代码什么意思急求大神解答
按代码看,是一个2行的LCD,如2*20LCD。
if(hang==1)
write_com(0x80+add);//意思是指定地址在第1行的第add个位置
else
write_com(0x80+0x40+add);//意思是指定地址在第2行(0x80+0x40
是第2行)的第add个位置
if(date
==
1)
write_com(0x0f);
//意思是在指定的位置LCD会自动闪烁光标
else
write_com(0x0c);
//意思是LCD关闭在指定位置的光标
⑸ 求写一段简单的51单片机C语言代码
#include < reg52.h >
#include <intrins.h>
sbit P00 = P0^0;
void delay(unsigned int ms)
{
unsigned char i;
while(ms--) for(i = 110; i-- ; i > 0);
}
void main()
{
unsigned char LED = 0xfe, COUN = 0;
while(1) {
P1 = LED;
P2 = COUN;
if (P00 == 1) {
delay(2);
if (P00 == 1) {
while (P00 == 1);
LED = _cror_(LED, 1);
COUN++;
} } } }
⑹ 单片机c语言必背代码
TR0 = 1;
ET0 = 1;
EA = 1;
⑺ 单片机流水灯C语言程序(8个灯,依次点亮每个灯,延时500MS)
单片机流水灯C语言程序的源代码如下:
#include //51系列单片机定义文件
#define uchar unsigned char //定义无符号字符
#define uint unsigned int //定义无符号整数
void delay(uint); //声明延时函数
void main(void)
{
uint i;
uchar temp;
while(1)
{
temp=0x01;
for(i=0;i<8;i++) //8个流水灯逐个闪动
{
P1=~temp;
delay(100); //调用延时函数
temp<<=1;
}
temp=0x80;
for(i=0;i<8;i++) //8个流水灯反向逐个闪动
{
P1=~temp;
delay(100); //调用延时函数
temp>>=1;
}
temp=0xFE;
for(i=0;i<8;i++) //8个流水灯依次全部点亮
{
P1=temp;
delay(100); //调用延时函数
temp<<=1;
}
temp=0x7F;
for(i=0;i<8;i++) //8个流水灯依次反向全部点亮
{
P1=temp;
delay(100); //调用延时函数
temp>>=1;
}
void delay(uint t) //定义延时函数
{
register uint bt;
for(;t;t--)
for(bt=0;bt<255;bt++);
}
(7)单片机c语言代码扩展阅读
51单片机流水灯的源代码如下
#include<reg51.h>
#include<intrins.h>
voiddelay(inta)
{
inti;
while(a--)for(i=0;i<110;i++);
}
main()
{
inti;
while(1)
{
P0=0xfe;
for(i=0;i<8;i++)
{
P0=_crol_(P0,1);
delay(500);
}
}
}
⑻ 单片机c语言程序
如果没有定义
no_timer2
就执行下面的程序。。如果定义了。。就执行#else下面的程序、、与if。。。else的用法差不多。。
#endif就是结束的意思。。与#ifndef
是相对的。。