找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2349|回复: 0
打印 上一主题 下一主题
收起左侧

some simple c of single chip

[复制链接]
跳转到指定楼层
楼主
ID:51472 发表于 2013-7-9 09:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <reg52.h>        //51单片机内核的库,里面存放一些地址定义
sbit ADDR0=P1^0;
sbit ADDR1= P1^1;
sbit ADDR2=P1^2;        //此部分需refer相应的硬件电路
sbit ADDR3=P1^3;      
sbit ENLED=P1^4;
typedef unsigned char uint8;
uint8 count=0;            //定时器溢出累加器
void time (void);         //1s定时函数原型
int main(void)
{  
uint8 index=0;
uint8 num[16]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xa7,0xa1,0x86,0x8e};   //定义一个数组里面存放数码管0~f真值表常量(refer 硬件)
uint8 *pn=num;         //将数组首地址赋值给指针变量
ADDR3=1;
ENLED=0;                //使能3-8译码器(refer 硬件)
ADDR0=1;
ADDR1=0;
ADDR2=1;
while(1)
{
  while(index++<16)   //数组访问索引直到数组末尾即num[15]
  {
    P0=*(pn++);         //指针变量读取数组内容
    time();                  //调用一秒定时函数
  }
  pn=num;                //指针变量赋初值为了循环读取数组content
  index=0;
}
}
void time (void)      //1S定时函数此函数返回值为空型且不接受参数
{
TF0=0;
TR0=1;                  //定时器初始化相关
TH0=0Xb8;
TL0=0X00;            //20ms初值
TMOD=0X01;
while(count<50)   //20ms 循环50次 即完成1s定时   1s=1000ms
  if(TF0)
  {
   TF0=0;
   TH0=0Xb8;      //非中断溢出需软件清零并赋初值
   TL0=0X00;
   count++;
  }
count=0;           //count清零为了下次继续计数}



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表