Java编程

单片机c语言编程

单片机c语言编程300例

很高兴为你解答,我这里资料比较多,给你找了一份之前保留的,不知道是不是你想要的资料,觉得可以就拿去,我这里还有源码,希望我的回答对你有帮助!

单片机c语言编程

单片机c语言编程

单片机c语言编程

单片机c语言编程

单片机c语言编程

单片机c语言编程

可以,我马上发过去给你。

M16L.asm 这个文件是我自已平时练习的时候写的,加了很多的说明,也许对你有帮助,所以就一同发给你了。

已经成功发出去了,你查收一下。

单片机c语言编程

单片机的外部结构:

DIP40双列直插;

P0,P1,P2,P3四个8位准双向I/O引脚;(作为I/O输入时,要先输出高电平)

电源VCC(PIN40)和地线GND(PIN20);

高电平复位RESET(PIN9);(10uF电容接VCC与RESET,即可实现上电复位)

内置振荡电路,外部只要接晶体至X1(PIN18)和X0(PIN19);(频率为主频的12倍)

程序配置EA(PIN31)接高电平VCC;(运行单片机内部ROM中的程序)

P3支持第二功能:RXD、TXD、INT0、INT1、T0、T1

单片机内部I/O部件:(所为学习单片机,实际上就是编程控制以下I/O部件,完成指定任务)

四个8位通用I/O端口,对应引脚P0、P1、P2和P3;

两个16位定时计数器;(TMOD,TCON,TL0,TH0,TL1,TH1)

一个串行通信接口;(SCON,SBUF)

一个中断控制器;(IE,IP)

针对AT89C52单片机,头文件AT89x52.h给出了SFR特殊功能寄存器所有端口的定义。教科书的160页给出了针对MCS51系列单片机的C语言扩展变量类型。

C语言编程基础:

十六进制表示字节0x5a:二进制为01011010B;0x6E为01101110。

如果将一个16位二进数赋给一个8位的字节变量,则自动截断为低8位,而丢掉高8位。

++var表示对变量var先增一;var—表示对变量后减一。

= 0x0f;表示为 x = x

TMOD = ( TMOD & 0xf0 )
0x05;表示给变量TMOD的低四位赋值0x5,而不改变TMOD的高四位。

While( 1 ); 表示无限执行该语句,即死循环。语句后的分号表示空循环体,也就是{;}

在某引脚输出高电平的编程方法:(比如P1.3(PIN4)引脚)

#include AT89x52.h //该头文档中有单片机内部资源的符号化定义,其中包含P1.3

void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口

P1_3 = 1; //给P1_3赋值1,引脚P1.3就能输出高电平VCC

While( 1 ); //死循环,相当 LOOP: goto LOOP;

注意:P0的每个引脚要输出高电平时,必须外接上拉电阻(如4K7)至VCC电源。

在某引脚输出低电平的编程方法:(比如P2.7引脚)

#include AT89x52.h //该头文档中有单片机内部资源的符号化定义,其中包含P2.7

void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口。

P2_7 = 0; //给P2_7赋值0,引脚P2.7就能输出低电平GND

While( 1 ); //死循环,相当 LOOP: goto LOOP;

在某引脚输出方波编程方法:(比如P3.1引脚)

#include AT89x52.h //该头文档中有单片机内部资源的符号化定义,其中包含P3.1

void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口

While( 1 ) //非零表示真,如果为真则执行下面循环体的语句

P3_1 = 1; //给P3_1赋值1,引脚P3.1就能输出高电平VCC

P3_1 = 0; //给P3_1赋值0,引脚P3.1就能输出低电平GND

} //由于一直为真,所以不断输出高、低、高、低……,从而形成方波

将某引脚的输入电平取反后,从另一个引脚输出:( 比如 P0.4 = NOT( P1.1) )

#include AT89x52.h //该头文档中有单片机内部资源的符号化定义,其中包含P0.4和P1.1

void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口

P1_1 = 1; //初始化。P1.1作为输入,必须输出高电平

While( 1 ) //非零表示真,如果为真则执行下面循环体的语句

if( P1_1 == 1 ) //读取P1.1,就是认为P1.1为输入,如果P1.1输入高电平VCC

{ P0_4 = 0; } //给P0_4赋值0,引脚P0.4就能输出低电平GND

else //否则P1.1输入为低电平GND

//{ P0_4 = 0; } //给P0_4赋值0,引脚P0.4就能输出低电平GND

{ P0_4 = 1; } //给P0_4赋值1,引脚P0.4就能输出高电平VCC

} //由于一直为真,所以不断根据P1.1的输入情况,改变P0.4的输出电平

将某端口8个引脚输入电平,低四位取反后,从另一个端口8个引脚输出:( 比如 P2 = NOT( P3 ) )

#include AT89x52.h //该头文档中有单片机内部资源的符号化定义,其中包含P2和P3

void main( void ) //void 表示没有输入参数,也没有函数返值,这入单片机运行的复位入口

P3 = 0xff; //初始化。P3作为输入,必须输出高电平,同时给P3口的8个引脚输出高电平

While( 1 ) //非零表示真,如果为真则执行下面循环体的语句

{ //取反的方法是异或1,而不取反的方法则是异或0

P2 = P3^0x0f //读取P3,就是认为P3为输入,低四位异或者1,即取反,然后输出

} //由于一直为真,所以不断将P3取反输出到P2

注意:一个字节的8位D7、D6至D0,分别输出到P3.7、P3.6至P3.0,比如P3=0x0f,则P3.7、P3.6、P3.5、P3.4四个引脚都输出低电平,而P3.3、P3.2、P3.1、P3.0四个引脚都输出高电平。同样,输入一个端口P2,即是将P2.7、P2.6至P2.0,读入到一个字节的8位D7、D6至D0。

求51单片机的上升沿和下降沿C语言检测程序列子,端口就是普通IO口。

这里只讲原理,不关注速度。实际设计工作中,已经有很多单片机能够识别io端口上升沿和下降沿中断,且方式不止一种。

sbit io_inp=P2^1;输入端

bit old_bit;输入端电平记忆

unsigned char low_high;上升下降沿标志,0=无变化,1=上升沿,2、下降沿

void io_rest(void)

if(old_bit=!io_inp)

old_bit=io_inp;

if(io_inp=1)

low_high=1;

else

low_high=2;

void main(void)

old_bit=io_inp=P2^1;

while(1)

low_high=0;

io_rest(void);

//在此应用

51单片机C语言编程怎样创建一个空的数组,之后我要把数据放到数组里

很简单,定义一个指定长度(必须有)的数组,不初始化就可以了,最好指定一下存储段,在访问时可以优化一些。

int data address[20]; /* 整型数组,名称 address,长度 20,存储在 data 段 */

char idata name[10]; /* 字符数组,名称 name,长度 10,存储在 idata 段 */

long xdata table[100]; /* 长整型数组,名称 table, 长度 100,存储在 xdata 段 */

求单片机程序~用c语言写的

是要仿真吗?还是实物开发板?

需要设计仿真图吗?

写C语言程序?还是汇编程序?

请问单片机C语言编程中那些进制数是什么意思啊? 下面举例:

首先,你应该知道0x40是十六进制数吧。其次,计算机里面的数据以二进制存储也不用多说了。

使用十六进制数有不同的作用。

首先,十六进制的数也是一个数字,可以进行数字运算,比如0x40+0x40=0x80。

其次,十六进制和二进制的转换十分密切。在单片机中,对寄存器的操作是一个十分重要的内容(什么是寄存器?不知道的话说明你单片机还没入门,赶紧百度去吧),有些寄存器就像是一个开关。假设有一个寄存器叫SWITCH(我编的名字,意思是开关),它有八位,作用是八个灯的开关。如果第一位是1,则把第一盏灯打开,第二位是1,就打开第三盏,依此类推。如果我想把第一三盏灯打开,我就需要给SWITCH赋值 10100000,第一位和第三位是1,打开,其他是0,关闭。这样就相当于一个语句 SWITCH = 10100000。但是10100000太长了,如果改成16进制数,就是0xA0,那么,这个语句也可以写成 SWITCH = 0xA0。这就是用十六进制的好处。

那么,怎么知道用什么数据呢?你就得知道某个寄存器每一位的作用。在你的单片机对应的手册里,会对每一个寄存器的作用做详细的解释。去看看操作手册,你就知道赋值是什么用了。

最后,用windows自带的计算器软件里面的 程序员 模式(查看——程序员),能方便地实现各个进制的转换。

用单片机不少时间啦~给你一点点帮助~

单片机c语言中编程disp()语句是什么意思

disp() , 通常是做为显示用的函式, 用来输出(呈现)一个结果或是输出过程的一段程序码.

在C语言中, 函式用来包装一小段程序, 藉由包装, 将程序结构化, 利於重复叫用及理解.

单片机中, 通常使用disp()输出一个结果到显示屏或是数码管. 也有可能是 显示过程的控制程序, 例如多位数码管的扫描式显示之控制过程.

51单片机c语言编程中,有没有只定义p2.1到p2.6的写法?不要一个个的定义。

51不支持位数组

可以通过对作为sfr的P2进行对相应位的位运算变相实现

求大神写一个单片机计数器c语言程序

#include

#define uchar unsigned char

#define uint unsigned int

uint times,freq;

sbit p35=P3^5;

main()

TMOD=0x01;

TH0=0;

TL0=0;

while(1)

while(p35);

TR0=1;

while(!p35);

while(p35);

TR0=0;

times=TH0*256+TL0;

freq=1000000/times;

//处理频率,自己做

『青青星座网』原创文章,未经允许不得转载

Similar Posts

发表评论

邮箱地址不会被公开。 必填项已用*标注