生产实训日报(8)

姓名:曹佳鑫   日期:6 月 27 号

今日学习任务:中断、定时器的学习,以及课设的一部分。

今日任务完成情况:课设的40%。

今日开发中遇到的问题汇总:好多

今日未解决的问题:好多

今日开发收获:无

自我评价:一般

上课知识点:

1定时器

#include <reg51.h>
sbit wei = P2^7;
sbit duan = P2^6;
int time;
unsigned char table_duan[] = {0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void main()
{
int i = 0;
EA = 1;//打开定时器
ET0 =1;
  TMOD = 0x01; //使用定时器0的工作方式
TH0 = (65535 - 50000)/256;//高8位  (50ms)
TL0 = (65535 - 50000)%256;//低8位
TR0 = 1; //开始计数

wei = 1;//
P0 = 0xfe;
wei = 0;

while(1)
{
if(time == 20) (50ms * 20 = 1s)
{
time = 0;
duan = 1;
P0 = table_duan[i];
duan = 0;
i++;
if(i == 10)
{
i = 0;
}
}  
}
}
void timer_0() interrupt 1 //定时器中断 1
{
time++;

}


2,定时器和数码管结合使用

#include <reg51.h>
unsigned char code table_duan[] = {0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f, 0x77, 0x7c};
int flag = 0;
void display(int num)
{
int ge, shi;

ge = num % 10;
shi = num / 10;

if (num % 2)    //显示个位 
{
P0 = 0xf7;
P2 = table_duan[ge  ];
}
else
{
P0 = 0xfb;
P2 = table_duan[shi];
}
}


int main()
{
int tmp = -1;
EA = 1;
ET0 = 1;
TMOD = 0x01;
TH0 = (65535 - 10000) / 256;
TL0 = (65535 - 10000) % 256;
TR0 = 1;


while (1)
{
if (tmp != flag)
{
if (flag == 99)
{
flag = 0;
}


display(flag);


tmp = flag;
}


}
return 0;
}


void timer_0() interrupt 1
{
TH0 = (65535 - 10000) / 256;
TL0 = (65535 - 10000) % 256;
flag++;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值