单片机编程实例2

单片机编程实例2

ID:40633780

大小:433.00 KB

页数:46页

时间:2019-08-05

单片机编程实例2_第1页
单片机编程实例2_第2页
单片机编程实例2_第3页
单片机编程实例2_第4页
单片机编程实例2_第5页
资源描述:

《单片机编程实例2》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、单片机C51延时时间怎样计算?C程序中可使用不同类型的变量来进行延时设计。经实验测试,使用unsignedchar类型具有比unsignedint更优化的代码,在使用时应该使用unsignedchar作为延时变量。以某晶振为12MHz的单片机为例,晶振为12MHz即一个机器周期为1us。一.500ms延时子程序程序:voiddelay500ms(void){unsignedchari,j,k;for(i=15;i>0;i--)for(j=202;j>0;j--)for(k=81;k>0;k--);}计算分析:程序共有三层循环一层循环n:R5*2=81*2=16

2、2usDJNZ2us二层循环m:R6*(n+3)=202*165=33330usDJNZ2us+R5赋值1us=3us三层循环:R7*(m+3)=15*33333=499995usDJNZ2us+R6赋值1us=3us循环外:5us子程序调用2us+子程序返回2us+R7赋值1us=5us延时总时间=三层循环+循环外=499995+5=500000us=500ms计算公式:延时时间=[(2*R5+3)*R6+3]*R7+5二.200ms延时子程序程序:voiddelay200ms(void){unsignedchari,j,k;for(i=5;i>0;i--)

3、for(j=132;j>0;j--)for(k=150;k>0;k--);}三.10ms延时子程序程序:voiddelay10ms(void){unsignedchari,j,k;for(i=5;i>0;i--)for(j=4;j>0;j--)for(k=248;k>0;k--);}四.1s延时子程序程序:voiddelay1s(void){unsignedcharh,i,j,k;for(h=5;h>0;h--)for(i=4;i>0;i--)for(j=116;j>0;j--)for(k=214;k>0;k--);}实验6端口按键判断技术(按键显示数字)  

4、此部份由8个轻触按键组成,一端接地,一端由JP48引出,当按下按键时,相应端口为低电平。 相关原理图:程序运行照片:接线方法: 1、按键接到P3口。用一条8PIN数据排线,把按键部份的JP48,接到CPU部份的P3口JP53.2、接8位数码管的数据线。将数码管部份的数据口JP5接到CPU部份的P0口JP51.3、接8位数码管的显示位线。将数码管部份的显示位口JP8接到CPU部份的P2口JP52.任务:键盘显示数字,通过按键盘上的K02,K03,K04,K05四个按键,实现数码管显示0,1,2,3汇编语言参考程序:org0000h;(1)ljmpstart;(2

5、)org0080h;(3)start:movp2,#0ffh;(4)CLRP2.6;选中最右边的七段码。;(5)movp3,#0ffh;初始化,P3口置高;(6)l1:jnbp3.2,l2;(7)jnbp3.3,l3;;(8)jnbp3.4,l4;;(9)jnbp3.5,l5;检测按键;(10)ljmpl1;循环检测;(11)l2:movp0,#28H;显示'0';(12)ljmpl1;(13)l3:movp0,#7EH;显示'1';(14)ljmpl1;(15)l4:movp0,#0A2H;显示'2';(16)ljmpl1;(17)l5:movp0,#62H

6、;显示'3';(18)ljmpl1;(19)end;(20)c语言参考程序:#include//头文件#defineucharunsignedchar//宏定义,为方便编程#defineuintunsignedint#defineDIGIP0//宏定义,将P1口定义为数码管#defineSELECTP2//宏定义,将P2定义为数码管选择口#defineKEYP3//宏定义,将P3口定义为按键端口uchardigivalue[]={0x28,0x7e,0x0a2,0x62,0x74,0x61,0x21,0x7a,0x20,0x60};//显示的

7、数字数组,依次为0,1,..,9charcodeSST516[3]_at_0x003b;//仿真器入口main()//主函数{SELECT=0xbf;//选择第7个数码管while(1){ switch(KEY)//判断键值{case0xfb:DIGI=digivalue[0];//若KO2按下,数码管显示0break;//跳出循环case0xf7:DIGI=digivalue[1];//若KO3按下,数码管显示1break;case0xef:DIGI=digivalue[2];//若KO4按下,数码管显示2break;case0xdf:DIGI=digiva

8、lue[3];//若KO5按下,数码管

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。