c语言51单片机实例程序详解大全

发布 2019-08-12 21:03:55 阅读 5372

【实例1】使用累加器进行简单加法运算:

mov a,#02h ;a←2

add a,#06h ;a←a+06h

实例2】使用b寄存器进行简单乘法运算:

mov a,#02h ; a←2

mov b,#06h ; b←6

mul abba←a*b=6*2

实例3】通过设置rs1,rs0选择工作寄存器区1:

clr psw.4 ; psw.4←0

setb psw.5 ; psw.5←1

实例4】使用数据指针dptr访问外部数据数据存储器:

mov dptr, #data16 ; dptr←data16

movx a, @dptr ; a←((dptr))

movx @ dptr, a ; dptr)←a

实例5】使用程序计数器pc查表:

mov a,#datadata

movc a, @a+dptr ; pc←(pc)+1 ,a←((a)+(pc))

实例6】if语句实例:

void main()

int a,b,c,min;

printf(" please input three number:")

scanf("%d%d%d ",a,&b,&c);

if(aelse if(b else if(c else printf("there at least two numbers are equal");

实例7】switch-case语句实例:

void main()

int num; printf("input one number:")

scanf("%d",&num);

switch(num)

while(i<=10);

实例11】语句形式调用实例:

void main()

int i=0; while(i<=10) i++;

sum();函数调用*/

实例12】表达式形式调用实例:

void main()

int a,b,i=0; while(i<=10) i++;

i=4*sum(a,b); 函数调用*/

实例13】以函数的参数形式调用实例:

void main()

int a,b,c,i=0; while(i<=10) i++;

i= max(c,sum(a,b));函数调用*/

实例14】函数的声明实例:

void main()

int max(int x,int y); 函数的声明*/

int a,b,c,i=0; while(i<=10) i++;

i= max(c,sum(a,b));函数调用*/

实例15】函数递归调用的简单实例:

void fun()

int a=1, result,i;

for(i=0;i<10;)

return result;

实例16】数组的实例:

void main()

char num[3] [3定义多维数组*/

int i=0,j=0;

for(;i<3;i++)

for(;j<3;j++)printf(“%c”,num[i][j]);

printf(“/n”);

实例17】指针的实例:

void main()

int a=3,*p;

p=&a; /将变量a的地址赋值给指针变量p*/

printf(“%d,%d”,a,*p); 输出二者的数值进行对比*/

实例18】数组与指针实例:

void main()

int i=3,num[3]=,p;

p=num; /将数组num的地址赋值给指针变量p*/

result =max(p,3); 函数调用,计算数组的最大值*/

实例19】p1口控制直流电动机实例。

sfr p1=0x90;

sbit p10=p1^0;

sbit p11=p1^1;

void main ()

int i, m;

int j=100;

int k=20;

/ 正快转。

for (i=0; i<100; i++)

p10=1;

for (j=0; j<50; j++)

p10=0;

for (j=0; j<10; j++)

/正慢转。for (i=0; i<100; i++)

p10=1;

for (j=0; j<10; j++)

p10=0;

for (j=0; j<50; j++)

p11=0;

for (j=0; j<10; j++)

/ 负慢转。

for (i=0; i<100; i++)

p11=1;

for (j=0;j<10;j++)

p11=0for (j=0; j<50; j++)

实例20】用74ls165实现串口扩展并行输入口。

1)函数声明管脚定义。

库函数声明,管脚定义。

#include<>

sbit load=p1^7;

/用p1^7控制sh/ 管脚。

2)串口初始化函数uart_init()

/ 函数名称:uart_init()

/ 功能说明:串口初始化,设定串口工作在方式0

void uart_init(void)

scon=0x10;

//设串行口方式0,允许接收,启动接收过程。

es=0;//禁止串口中断。

3)数据接收函数pa()

/ 函数名称:pa()

/ 输入参数:无。

/ 输出参数:返回由并口输入的数据。

/ 功能说明:接收八位串行数据。

unsigned char pa(void)

unsigned char pa_data;

load=0;

//当p1.7输出低电平,74ls165将并行数据装入寄存器//当中。

load=1;

//当p1.7输出高电平,74ls165在时钟信号下进行移位。

uart_init();

//74ls165工作在时钟控制下的串行移位状态。

while(ri==0);

//循环等待。

ri=0;pa_data=sbuf;

return pa_data;

//返回并行输入的数据。

1)函数声明管脚定义。

库函数声明,管脚定义。

#include<>

sbit a7=acc^7;

sbit simuseri_clk=p1^6;

/用p1^6模拟串口时钟。

sbit simuseri_data=p1^5;

/用p1^5模拟串口数据。

sbit drive74165_ld=p1^7;

/用p1^7控制sh/ 管脚。

2)数据输入函数in_simuseri()

51单片机基本结构详解

单片机是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的 处理器cpu 随机存储器ram 只读存储器rom 多种i o口和中断系统 定时器 计数器等功能 可能还包括显示驱动电路 脉宽调试电路电路 模拟多路转换器 a d转换器等电路 集成到一块硅片上构成的一个小而完善的微型计算机系统。...