标题: 51单片机C语言嵌套汇编的00~60计时器程序设计 [打印本页]

作者: madnick16    时间: 2018-11-28 21:03
标题: 51单片机C语言嵌套汇编的00~60计时器程序设计
由于C语言的结构性与可移植性强,所以主体框架采用C语言
另一方面,由于汇编延时计算比较精准,故采用汇编作为延时程序
首先先看开发板电路图
1.138译码器,提供片选信号


2.数码管,提供位选


程序如下:
#include "reg52.h"
#include<intrins.h>        
sbit beep=P1^5;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
unsigned char tbs[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void del() /*本函数延迟为1MS*/
{
  #pragma asm   /*嵌套汇编开始的标识符*/
                DEL3:MOV R0,#1 /*这段为循环DEL2的次数*/
                DEL2:MOV R1,#10 /*最内层为100微秒,R1的数为循环100微秒的次数*/
                DEL1:MOV R2,#25  
          DEL0:NOP
               NOP
               DJNZ R2,DEL0
               DJNZ R1,DEL1
               DJNZ R0,DEL2
        #pragma endasm /*嵌套汇编结束的标识符*/
}
void display(int i)
{
        P0=tbs[ i];        
}
void main()
{
        int x,y,ps;
        while(1)
        {
                 x=0;
     while(x<=5)  
                 {
                  y=0;
                        while(y<=9)
                        { ps=0;
                          while(ps<500) /* 500*2*1ms=1s 即延迟一秒y值+1 */
                                {
                                       LSA=1;
                                        LSB=0;
                                        LSC=0;
                                        display(x);
                                        del();    /*采用动态显示,因为单片机一次操作只能显示1片数码管,1MS交替显示第一位和第二位数码管*/
                                        LSA=0;
                                        LSB=0;
                                        LSC=0;
                                        display(y);
                                        del();
                                        ps=ps+1;
                                }
                                y=y+1;        
                        }
      x=x+1;               
                 }
        }
}

注:C嵌套汇编步骤
1.打开c文件的设置

2.把这两项点击两次到选项变黑(不是灰)


3.本程序还需在source group里添加另一个文件
该文件在keil下C51文件夹下的lib文件夹,有时需要加其他lib文件,可以看我另一个帖子http://www.51hei.com/bbs/dpj-143426-1.html





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1