5343|20

63

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

菜鸟刚学单片机,看别人的代码看不明白,请高手讲解一下。 [复制链接]

是51单片机的C语言的代码。
有几处菜鸟都不明白是啥意思,就标上了//这里是啥意思呢??请高手帮我写一下注释,呵呵,谢谢了。
#include
#include

unsigned char data dis_digit;
unsigned char data dis_buf[8];
unsigned char data dis_index;

void main()
{
        P0 = 0xff;
        P2 = 0xff;
        TMOD = 0x50;//这里是啥意思呢??
        TH0 = 0x50;//这里是啥意思呢??
        TL0 = 0xf0;//这里是啥意思呢??
        IE = 0x82;//这里是啥意思呢??

        dis_buf[0] = 0xf9;
        dis_buf[1] = 0x80;
        dis_buf[2] = 0xf8;
        dis_buf[3] = 0x82;
        dis_buf[4] = 0x92;
        dis_buf[5] = 0x99;
        dis_buf[6] = 0xb0;
        dis_buf[7] = 0xa4;
       
        dis_digit = 0xfe;
        dis_index = 0;
       
        TR0 = 1;
        while(1);

}

void timer0() interrupt 1
// 定时器0中断服务程序, 用于数码管的动态扫描
// dis_index --- 显示索引, 用于标识当前显示的数码管和缓冲区的偏移量
// dis_digit --- 位选通值, 传送到P2口用于选通当前数码管的数值, 如等于0xfe时,
//                                选通P2.0口数码管
// dis_buf   --- 显于缓冲区基地址       
{
        TH0 = 0xf0;//这里是啥意思呢??
        TL0 = 0xf0;//这里是啥意思呢??
        P2 = 0xff       
        P0 = dis_buf[dis_index];                       
        P2 = dis_digit;                                               
        dis_digit = _cror_(dis_digit,1);        // 位选通值左移, 下次中断时选通下一位数码管
        dis_index++;                                                //
                                       
        dis_index &= 0x07;                        // 8个数码管全部扫描完一遍之后,再回到第一个开始下一次扫描
}

最新回复

支持搂主,收藏  详情 回复 发表于 2008-4-30 21:58
点赞 关注

回复
举报

76

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
上面是对定时器的操作 ,TMOD   =   0x50;//这里是啥意思呢??
TH0   =   0x50;//这里是啥意思呢??
TL0   =   0xf0;//这里是啥意思呢??
分别是模式,和定时器初值的高位、低位,IE是使能中断,这个在任何单片机的书上都能看到,建议先看书。
 
 

回复

88

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
TH0   =   0xf0;//这里是啥意思呢??
TL0   =   0xf0;//这里是啥意思呢??
表面上:他们是制定时期的初值

语义上:它重装定时器的值
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

4
 
呵呵,兄弟还是多看看书吧

 
 
 

回复

92

帖子

0

TA的资源

一粒金砂(初级)

5
 
sfr TMOD = 0x89;
/*
TMOD寄存器
+----+---+---+---+----+---+---+---+
| 7  | 6 | 5 | 4 | 3  | 2 | 1 | 0 |
+----+---+---+---+----+---+---+---+
|GATE|C/T|M1 |M0 |GATE|C/T|M1 |M0 |
+----+---+---+---+----+---+---+---+
|<---计时器1---->|<---计时器0---->|
GATE:Timer0或Timer1必须在INT0或INT1高电平才初始化
C/T:1表示外部引脚T0或T1输入的脉冲计数
+----+----+----------+-------------------------------------+
| M1 | M0 | 工作模式 |              说明                   |
+----+----+----------+-------------------------------------+
| 0  | 0  |     0    | 13位计时/计数器                           |
+----+----+----------+-------------------------------------+
| 0  | 1  |     1    | 16位计时/计数器                           |
+----+----+----------+-------------------------------------+
| 1  | 0  |     2    | 8位计时/计数器,可自动重新载入计数值|
+----+----+----------+-------------------------------------+
| 1  | 1  |     3    | 两组独立8位计时器                   |
+----+----+----------+-------------------------------------+
工作模式0:使用THx的8位和TLx的低5位。可从0数到8191,之后益出产生中断自动清0。
工作模式1:可从0数到65535,之后益出产生中断自动清0。
工作模式2:只使用TLx可从0数到255,之后益出产生中断,同时自动载入TLx。

sfr IE   = 0xA8;
/*
中断寄存器 IE
+---+---+---+---+---+---+---+---+
| 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
+---+---+---+---+---+---+---+---+
|EA | - |ET2|ES |ET1|EX1|ET0|EX0|
+---+---+---+---+---+---+---+---+
EA:整体中断使能
ET2:Timer2中断使能//只有52系列才有
ES:Uart中断使能
ET1:Timer1中断使能
EX1:INT1中断使能
ET0:Timer0中断使能
EX0:INT0中断使能
*/
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

6
 
多看点书,都是基本概念
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

7
 
UP
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

8
 
看单片机原理
 
 
 

回复

59

帖子

0

TA的资源

一粒金砂(初级)

9
 
找本单片机的书看看。大概看一遍,然后用到哪块,具体去查那一块的原理和应用例子。没有给我发个邮件,我发个电子版给你
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

10
 
看看定时器部分吧!
对于每个寄存器的每个位都有详细介绍
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

11
 
51的基本知识并不复杂,把《中断》、《定时器/计数器》、《串口》和《并口》四大块稍微整理一下做个笔记,就什么都明白了。
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

12
 
有空灌水没空看书咯!
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

13
 
4楼说的不错,楼主应该在问之前在书上翻翻。
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

14
 
兄弟看看单片机的datasheet吧
_-!!
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

15
 
可以找个单片机的书看看,比较基础的东西
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

16
 
TMOD = 0x50;//这里是啥意思呢??
TH0 = 0x50;//这里是啥意思呢??
TL0 = 0xf0;//这里是啥意思呢??
IE = 0x82;//这里是啥意思呢??
这是都是寄存器赋值,在头文件里应该能看到他们的初始化地址,跟硬件有关.
 
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

17
 
TMOD = 0x50;//这里是啥意思呢??
0101 0000
第一个1是C/T(counter ,timer)选项: 表示这里作为计数器用 如果等于0则是做定时器用
第二个1和前面紧挨的那个0合用,01表示工作在模式1下,即为16位计数


TH0 = 0x50;//这里是啥意思呢??
TL0 = 0xf0;//这里是啥意思呢??

TH0,TL0这里是给定时器(这里作计数)重装初值,具体有公式可以计算出计数的最大值

IE = 0x82;//这里是啥意思呢??
1000 0010
这里是中断允许控制,
第一个1表示允许中断(相当于几个不同终端的总开关,后面是控制各个不同中断的小开关)
第二个1表示允许定时器0中断,即,前面的定时器计数到最大值要重装的时候产生一个中断
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

18
 
单片机里面那些参数和控制实在太多了,所以你用到哪里,就要亲自动手查一查,看看相关说明就知道了。旁边放本书,或者电子资料,随时查找。
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

19
 
这一版块,太没人气了,是不是大家都成大侠了

如果成大侠了,也常回家看看嘛,家里太冷清了

据说努力顶帖也是一种美德,但我只想大家常回家看看

毕竟每天都有新手需要帮忙,而我能帮的只能是把帖子顶起来
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

20
 
不知,帮顶
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表