单片机C语言函数解说 单片机c语言指令汇总

单片机c语言程序解读,,求解释。。

include reg52.h

创新互联公司2013年成立,先为黔西南州等服务建站,黔西南州等地企业,进行企业商务咨询服务。为黔西南州企业网站制作PC+手机+微官网三网同步一站式服务解决您的所有建站问题。

#include intrins.h

是头文件

#define uchar unsigned char

#define uint unsigned int

是宏定义

uchar code DSY_CODE[]=

{

0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xbf

};

这是数码管的显示不同数的代码

uchar code Table_OF_Digits[][8]=

{

{0,9,10,1,2,10,2,5},

{2,1,10,5,7,10,3,9},

};

要显示的数

void DSY_Show() interrupt 1

{

TH0 = (8191-4000)/32;

TL0 = (8191-4000)%32;

P3 = _crol_(P3,1);

P0 = DSY_CODE[Table_OF_Digits[i][j]];

j = (j+1)%8;

if(++t!=350) return;

t = 0;

i = (i+1)%2;

}

设定动态扫描间隔时间和要显示 的数

其中

TH0 = (8191-4000)/32;

TL0 = (8191-4000)%32; 是设定动态扫描间隔时间

P3 = _crol_(P3,1);

P0 = DSY_CODE[Table_OF_Digits[i][j]];

j = (j+1)%8;

if(++t!=350) return;

t = 0;

i = (i+1)%2;

是要动态显示的数及选通控制

void main()

{

P3 = 0x80;

TMOD = 0x00;

TH0 = (8191-4000)/32;

TL0 = (8191-4000)%32;

IE = 0x82;

TR0 = 1;

while(1);

}

其中

TMOD = 0x00;

TH0 = (8191-4000)/32;

TL0 = (8191-4000)%32;

IE = 0x82;

TR0 = 1;

是确定定时器的工作模式及初始化定时器

单片机c语言的各个中断函数模型

c51中断函数的介绍

C51编译器允许用c51创建中断服务程序,大家仅仅需要关心中断号和寄存器组的选择就可以了。编译器自动产生中断向量和程序的入栈及出栈代码。在函数声明时包括interrupt,将把所声明的函数定义为一个中断服务程序。另外,可以用using定义此中断服务程序所使用的寄存器组。

一、中断函数的定义

1、中断函数定义的格式为:

函数类型 函数名 interrupt n using n

其中:

Interrupt后面的n是中断号。

关键字using后面的n是所选择的寄存器组,取值范围是0-3.

定义中断函数时,using是一个选项,可以省略不用。如果不用则由编译器选择一个寄存器组作为绝对寄存器组。

2、8051的中断过程通过使用interrupt关键字和中断号来实现,中断号告诉编译器中断程序的入口地址。中断号对应着IE寄存器中的使能位,换句话说,IE寄存器中的0位对应着外部中断0,相应的外部中断0的中断号是0.

IE寄存器中的使能位与外部中断对应关系:

中断号 中断源

0 外部中断0

1 定时器0

2 外部中断1

3 定时器1中断

4 串行口中断

5 定时器2中断

二、使用中断函数时要注意的问题:

1. 在设计中断时,要注意的是哪些功能应该放在中断程序中,哪些功能应该放在主程序中。一般来说中断服务程序应该做最少量的工作,这样做有很多好处。首先系统对中断的反应面更宽了,有些系统如果丢失中断或对中断反应太慢将产生十分严重的后果,这时有充足的时间等待中断是十分重要的。其次它可使中断服务程序的结构简单,不容易出错。

中断程序中放入的东西越多,他们之间越容易起冲突。简化中断服务程序意味着软件中将有更多的代码段,但可把这些都放入主程序中。中断服务程序的设计对系统的成败有至关重要的作用,要仔细考虑各中断之间的关系和每个中断执行的时间,特别要注意那些对同一个数据进行操作的ISR.

2. 中断函数不能传递参数。

3. 中断函数没有返回值。

4. 中断函数调用其他函数,则要保证使用相同的寄存器组,否则出错。

5. 中断函数使用浮点运算要保存浮点寄存器的状态。

单片机 C语言 函数定义

#define uint16 unsigned int - typedef unsigned int uint16;

#define uchar8 unsigned char - typedef unsigned char uchar8;

51单片机C语言中delay函数是怎么定义和使用的?

定义一个延时xms毫秒的延时函数

void delay(unsigned int xms) // xms代表需要延时的毫秒数

{

unsigned int x,y;

for(x=xms;x》0;x--)

for(y=110;y》0;y--);

}

使用:

void Delay10us(uchar Ms)

{

uchar data i;

for(;Ms》0;Ms--)

for(i=26;i》0;i--);

}

i=[(延时值-1.75)*12/Ms-15]/4

扩展资料

1、在C51中进行精确的延时子程序设计时,尽量不要或少在延时子程序中定义局部变量,所有的延时子程序中变量通过有参函数传递。

2、在延时子程序设计时,采用do…while,结构做循环体要比for结构做循环体好。

3、在延时子程序设计时,要进行循环体嵌套时,采用先内循环,再减减比先减减,再内循环要好。

51单片机C语言中delay函数是怎么定义和使用的

delay函数是一般自己定义的一个延时函数。

c语言定义延时函数主要通过无意义指令的执行来达到延时的目的。下面给出一个经典的延时函数。

// 定义一个延时xms毫秒的延时函数

void delay(unsigned int xms) // xms代表需要延时的毫秒数

{

unsigned int x,y;

for(x=xms;x0;x--)

for(y=110;y0;y--);

}


网站名称:单片机C语言函数解说 单片机c语言指令汇总
标题来源:http://ybzwz.com/article/hghcdi.html