Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1592194
  • 博文数量: 354
  • 博客积分: 8137
  • 博客等级: 中将
  • 技术积分: 5137
  • 用 户 组: 普通用户
  • 注册时间: 2009-11-26 15:40
文章分类

全部博文(354)

文章存档

2010年(300)

2009年(54)

分类: 嵌入式

2010-09-15 13:38:20

/*************************************************
*功能描述: CEPARK CAN开发板-数码管显示中断计数
*说明:每按一次中断按键,计数值加一,在数码管上显示
*版本:v2.00
*声明:程序来自网络,欢迎网友交流改进
* 活跃论坛,共同进步
*作者:协成电子    、hnrain
*时间:2010/09/14
*邮箱:hnrain1004@gmail.com    ,HQL19982003@163.com ,qq:87675298
*网站:bbs.cepark.com ;写程序如果有问题,可以在这里讨论
*我们的口号:让不懂can的学习者,也能轻松玩转can

*推荐教材:
饶运涛,邹继军《现场总线 CAN 原理与应用技术》.北京:北京航空航天大学出版社 (这本书,看着不错)
周立功《增强型80c51单片机速成与实战》还有周立功写的一些can通信程序算法很不错,值得学习
本程序,融入了那么一点点点点点,他们的编程思想,哈哈....仅供学习用
****************************************************/

#include <reg52.h>
#include <intrins.h>
#include <config.h>

//数码管段码显示:0~f,不亮

uint8 code LED_Disp[] = {0xc0,0xde,0xa2,0x8a,0x9c,0x89,0x81,0xda,0x80,0x88,
                            0x90,0x85,0xe1,0x86,0xa1,0xb1,0xff};

sfr LedPort = 0x80;     //段选段P0

sfr LedCtrl = 0xa0;     //位选段P2


uint8 Txd_data;
uint8 DisBuff[4];

//INT0为计数按键

void INT0_Counter(void) interrupt 0
{
    EA = 0;
    Txd_data++; //计数单元加1

    EA = 1;
}

void mDelay(uint16 mtime)
{
    for(; mtime > 0; mtime--)
    {
        uint8 j = 244;
        while(--j);
    }    
}

//初始化CPU

void CPU_init(void)
{
    IT0 = 1;//外部中断0负边沿触发

    EX0 = 1;//打开外部中断0

    EA = 1; //打开总中断

}


void LED_Disp_Seg7()
{

   LedCtrl = LedCtrl | 0xf0;

   DisBuff[0] = Txd_data%10;//取个位数

   DisBuff[1] = Txd_data%100/10; //取十位数

// DisBuff[2] = Rxd_data%10;     //百位数

// DisBuff[3] = Rxd_data%100/10; //千位数


   
   LedPort = LED_Disp[DisBuff[0]];
   LedCtrl = LedCtrl & 0x7f;
   mDelay(5);
   LedCtrl = LedCtrl | 0xf0;

   LedPort = LED_Disp[DisBuff[1]];
   LedCtrl = LedCtrl & 0xbf;
   mDelay(5);
   LedCtrl = LedCtrl | 0xf0;
#if 0
   LedPort = LED_Disp[DisBuff[2]];
   LedCtrl = LedCtrl & 0xdf;
   mDelay(5);
   LedCtrl = LedCtrl | 0xf0;

   LedPort = LED_Disp[DisBuff[3]];
   LedCtrl = LedCtrl & 0xef;
   mDelay(5);
   LedCtrl = LedCtrl | 0xf0;
#endif
}

void main(void)
{
    CPU_init();
    _nop_();
    while(1)
    {
        mDelay(5);

        LED_Disp_Seg7();

    }
}


文件:3 外部中断.zip
大小:18KB
下载:下载

CEPARK CAN总线开发板 程序更新20100914
阅读(992) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~