c51单片机语言
A. 51单片机语言
void Delay_ms(unsigned int t) //一个延时ms的程序,t是延时的数量,即是tms
{
unsigned int i,j;
for(i=0;i<t;i++)
for(j=0;j<120;j++)
;
}
void Delay(uint x) //延时时间
{
while(--x);
}
//---------------1602--------------------------------------
void delayms(uint z) //延时N ms
{
uint x,y;
for(x=z;x>0;x--)
for(y=120;y>0;y--);
}
void write_com(uchar com) //1602液晶写指令
{
rs=0;
lcden=0;
LCDDATA=com; //命令送端口
delayms(1); //延时1Ms
lcden=1;
delayms(2); //延时2Ms
lcden=0;
}
void write_date(uchar date) //1602液晶写数据
{
rs=1;
lcden=0;
LCDDATA=date; //数据送端口
delayms(1);
lcden=1;
delayms(2);
lcden=0;
}
void init_lcd(void) //初始化液晶,及画面初始化
{
uchar num;
wela=0;
lcden=0;
write_com(0x38); //16*2显示,5*7点阵,8位数据
write_com(0x0c); //显示开,关光标
write_com(0x06); //移动光标
write_com(0x01); //清除LCD的显示内容
write_com(0x80); //第一行的第一个字符位置。
for(num=0;num<13;num++) // " temper: ";
{
write_date(table[num]); //把table数组中定义的字符串显示出来。。。" temper: ";
Delay(10);
}
B. 51单片机c语言编程
#include<AT89X51.H>
//设CPU是时钟12MHz的8051系列
dataunsignedintms;
sbitKEY=P2^3;
voidSetupTimer0()
{
TMOD&=0XF0;//仅保留信息
TMOD|=0X02;//设置T0:定时功能,方式2,自动重载8位定时器/计数器
TH0=256-250;//定时每0.25ms中断一次
TL0=256-250;
TR0=1;//开启定时器
ET0=1;//定时器0中断打开
}
voidTimer0_ISR()interrupt1//中断服务程序
{
staticdataunsignedcharus250;
if(++us250>=4){++ms;us250=0;}
}
voidprocess1()
{
unsignedchari,d;
unsignedinttime,dlt;
//第一步8灯整体一直闪(闪10下)。
for(i=0;i<10;++i)
{
P1=0;
for(time=ms,dlt=0;dlt<500;dlt=ms-time);
P1=0xFF;
for(time=ms,dlt=0;dlt<500;dlt=ms-time);
}
//第二步整体灭5秒。
P1=0xff;
for(time=ms,dlt=0;dlt<5000;dlt=ms-time);
//第三步从右边逐个点亮并循环4遍。
for(i=0;i<4;++i)
for(d=1;d;d<<=1)
for(P1=~d,time=ms,dlt=0;dlt<500;dlt=ms-time);
//第4步循环完毕后全部熄灭;
P1=0xff;
}
voidprocess2()
{
unsignedchari,d;
unsignedinttime,dlt;
//第一步8灯整体闪3次。
for(i=0;i<3;++i)
{
P1=0;
for(time=ms,dlt=0;dlt<500;dlt=ms-time);
P1=0xFF;
for(time=ms,dlt=0;dlt<500;dlt=ms-time);
}
//第二步从左边逐个点亮并循环2遍。
for(i=0;i<2;++i)
for(d=0x80;d;d>>=1)
for(P1=~d,time=ms,dlt=0;dlt<500;dlt=ms-time);
//第三步循环完毕后8灯一直流水;
for(;KEY;)
for(d=1;d&&KEY;d<<=1)
for(P1=d,time=ms,dlt=0;dlt<500&&KEY;dlt=ms-time);
}
voidprocess3()
{
unsignedchari,j,d;
unsignedinttime,dlt;
//第一步8灯整体保持全灭,灭的时间为500ms,可以修改
P1=0XFF;
for(time=ms,dlt=0;dlt<500;dlt=ms-time);
//第二步8灯从外到里依次点亮,重复两遍。
for(i=0;i<2;++i)
for(d=0x1,j=0x80;d<=0x8;d<<=1,j>>=1)
for(P1=~(d|j),time=ms,dlt=0;dlt<500;dlt=ms-time);
//第三步8灯从里到外依次点亮,重复两遍循环完毕后8灯保持在4亮4灭的状态
for(i=0;i<2;++i)
for(d=0x8,j=0x10;d;d>>=1,j<<=1)
for(P1=~(d|j),time=ms,dlt=0;dlt<500&&KEY;dlt=ms-time);
P1=0xc3;
for(;KEY;);
}
voidprocess4()
{
unsignedchari,d;
unsignedinttime,dlt;
//第一步整体保持全灭。灭的时间为1000ms,可以修改
P1=0XFF;
for(time=ms,dlt=0;dlt<1000;dlt=ms-time);
//第二步从左到右流水两遍。
for(i=0;i<2;++i)
for(d=1;d;d<<=1)
for(P1=d,time=ms,dlt=0;dlt<500;dlt=ms-time);
//第三步从右到左逐个点亮三遍。
for(i=0;i<3;++i)
for(d=0x1;d;d<<=1)
for(P1=~d,time=ms,dlt=0;dlt<500;dlt=ms-time);
//第4步其中一盏灯保持闪
for(;KEY;)
{
for(d=0x8;KEY;d^=0x8)
for(P1=~d,time=ms,dlt=0;dlt<500&&KEY;dlt=ms-time);
}
}
voidmain()
{
//dataunsignedcharp0;
ms=0;
SetupTimer0();
EA=1;//全局中断打开
while(1)
{
process1();
process2();
process3();
process4();
}
}
C. 给51单片机编程序,用basic语言好还是c语言好
兄台你搞错了,basic是操作系统上用的编程。即Visual Basic是一种可视化的面向对象的编程语言版,以其编程简单、权快捷等特点,深受广大WINDOWS程序员的青睐。而51系列单片机只有用c语言汇编语言。另外单片机的c语言又跟标准c语语言有点差别。主要是IO口、中断及寄存器,不太一样。
单片机c语言增加了一些基本的指令 变量的赋值是16进制,当然单片机c语言只牵涉到普通c语言的基础部分。
但是在单片机上的C语言多了一些特定的指令,如SFR定义寄存器指令,在标准C上是没有的; 在标准C上的有些库,在单片机上是不支持的, 可以这么说,单片机C是标准C的子集,在这基础上,加上了一些单片机特定的指令构成。
D. 51单片机用什么语言编好
c和汇编各有特点
建议先用汇编搞懂原理
对以后学习更高级的单片机提供基础
E. 80c51单片机的语言和C语言有什么关系
80c51是单片机C语言,而C语言通常情况下是默认为POSIX
C,即为标准C,标准C是基础,要学好才可以去学一些难的C语言编程
F. 51单片机用的是什么编程语言
你好,C语言和汇编都是可以的!希望可以帮到你,满意请点赞!
G. 51单片机C语言程序
这个很简单,可以利用单片机的定时器来完成
当有脉冲输入的时候,启动定时器,并对定时器的计数值进行清零
每一次脉冲输入都清零计数值,当脉冲消失后,定时器的计数值达到指定时间则关闭
关闭的同时,调用其它函数,例如你的继电器控制
需要说明的是,我使用的开发板和你的不见得一样,所以端口的使用只能你自己修改了
但程序已经经过硬件测试成功,请放心使用,如果满意记得点赞哦
/***************************************************************************/
#include <reg51.h> //51单片机通用头文件
sbit P24=P1^0; sbit P25=P1^1; sbit P26=P1^2; sbit P27=P1^3;//数码管位选端口
char table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//数码管显示编码
sbit k=P3^7; sbit KK=P1^4;//定义按键和继电器端口
int t,n,s,fe=0;
/***************************************************************************/
void YS(int hs){int hk;for(;hs>0;hs--){for(hk=100;hk>0;hk--);}}//延时函数
/***************************************************************************/
void XS(int xs)//数码管显示
{
char d1,d2,d3,d4;
d1=(xs/1)%10; d2=(xs/10)%10; d3=(xs/100)%10; d4=(xs/1000)%10;
P0=table[d1]; P27=0; YS(5); P27=1;
P0=table[d2]; P26=0; YS(5); P26=1;
P0=table[d3]; P25=0; YS(5); P25=1;
P0=table[d4]; P24=0; YS(5); P24=1;
}
/***************************************************************************/
void main(void)//主函数
{
TMOD=0x01; EA=1; ET0=1; KK=0;//定时器初始化
TH0=(65536-921)/256; TL0=(65536-921)%256;//定时器初值
while(1)
{
XS(t);//调用数码管显示函数
if(k==0)//如果按键被按下
{
YS(10);//延时去抖动
if(k==0)//如果是有效按键
{
TR0=1;//启动定时器,开始计时
n=0;//每次按键都清空定时计数
t++;//按键值累加一次
KK=1;//继电器打开
while(!k){XS(t);}//等待按键松开,并调用数码管显示,避免黑屏
}
}
if(fe==1)//如果没按键输入
{
fe=0;t=0;//清空按键计数值,并设置标识符
KK=0;//继电器吸合
}
}
}
/***************************************************************************/
void int1() interrupt 1 //定时器中断
{
TH0=(65536-1000)/256; TL0=(65536-1000)%256; n++;//n等于100时,则为1秒
if(n>1000){TR0=0;n=0;fe=1;}//如果达到指定时间,则关闭定时器,并设置标识符
}
/***************************************************************************/
H. 单片机用什么语言编写程序
一般是C语言或者汇编语言。
1、大多数情况下,单片机运行的程序,都是C语言编写的。不过并不是纯粹的传统C语言,而是变种后的C51语言。
单片机C51语言是由C语言继承而来的。和C语言不同的是,C51语言运行于单片机平台,而C语言则运行于普通的桌面平台。C51语言具有C语言结构清晰的优点,便于学习,同时具有汇编语言的硬件操作能力。对于具有C语言编程基础的工程师,能够轻松地掌握单片机C51语言的程序设计。
2、汇编语言:
汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令。普遍地说,特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。
汇编语言不像其他大多数的程序设计语言一样被广泛用于程序设计。在今天的实际应用中,它通常被应用在底层,硬件操作和高要求的程序优化的场合。驱动程序、嵌入式操作系统和实时运行程序都需要汇编语言。
在一些情况下,C51并不能完美的实现功能,所以汇编语言是对C51的一个重要补充。一般来说,启动部分(基础硬件的初始化),往往是由汇编语言完成的。除此以外,一些要求时效性特别强,效率要求特别高时,也需要使用汇编语言完成。
I. c51单片机c语言程序
#include<reg51.h>
void delay(unsigned int i);
unsigned char dis[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f);unsigned char code[]={0xef,0xdf,0xbf,0x7f,0xfe,0xfd,0xfb,0xf7);void main(void)
{
unsigned char i,j;
while(1)
{
for(i=0;i<8;i--)for(j=0;j<8;j--)
}P0=dis[i]; P2=dis[i]; P1=dis[j]; P3=dis[j];
delay(10);
}
}
}void delay(unsigned int i)
{
unsigned int j;
for(;i!=0;i--)
for(j=3000;j>0;j--);
}这个可以实现P0P2,P1P3口 单个I/0口的具体意思不专是很明白!属
J. C51单片机用的是C语言还是汇编语言谢谢
两种语言都可以,因为最后烧写到芯片中的是二进制文件,该二进制文件由编辑器(如KEIL)编译连接C语言源码,或者汇编语言源码获得