• 回复
  • 收藏
  • 点赞
  • 分享
  • 发新帖

PIC单片机学习提问,望高手解答

大家好,我是单片机的爱好者,正在学习PIC的单片机,在学习中遇到一些问题,希望大家不吝赐教.谢谢大家!
同时希望能与和我一样的初学者共同进步.
再次感谢!
全部回复(14)
正序查看
倒序查看
pro-power
LV.5
2
2008-10-05 22:42
我学习的一本书上的有一个程序的开头是这样定义的:
1:       tmr0          equ   01h
2:       pcl           equ   02h
3:       status        equ   03h
4:       option_reg    equ   81h
5:       intcon        equ   0bh
......
8:       tmr0b         equ   6
9:       count         equ   20h
10:      rp0           equ   5h
......
以上都是定义寄存器的,比如第一句,就是定义地址是01h的寄存器取个代号为tmr0,如此类推.
在此我请问大家,第8句是什么意思,因为后面的6不是代表地址的,实际上书上说是为定时器赋初始值为6,就是从6开始计时.
请大家指教!! (同理第10句也是同样的问题)
0
回复
ice3fly
LV.1
3
2008-10-07 15:24
我也是新手,啥都不懂的噢!!互相学习噢,呵
0
回复
xiongls
LV.3
4
2008-10-09 16:08
@pro-power
我学习的一本书上的有一个程序的开头是这样定义的:1:      tmr0          equ  01h2:      pcl          equ  02h3:      status        equ  03h4:      option_reg    equ  81h5:      intcon        equ  0bh......8:      tmr0b        equ  69:      count        equ  20h10:      rp0          equ  5h......以上都是定义寄存器的,比如第一句,就是定义地址是01h的寄存器取个代号为tmr0,如此类推.在此我请问大家,第8句是什么意思,因为后面的6不是代表地址的,实际上书上说是为定时器赋初始值为6,就是从6开始计时.请大家指教!!(同理第10句也是同样的问题)
前5句都是定义头文件的,你应该会在相应的.H文件中找到,编程的时候可以不管它.直接加一条#INCLUDE《PIC.H》就可以了,用汇编的话把《PIC.H》换成相应的型号.
第8句是给TMR0寄存器赋值,从6开始记数或者定时.第9句是定义变量count的位置.第10句和1——5句是一样的,都是定义寄存器,相当于头文件.
这些都是很简单的东西.光看书是不行的,下个编译器自己敲程序什么都明白了.
另外单纯的MCU问题建议去其他网站,这个网站好象就这些问题回答较少.
www.pic16.com可能会好些
0
回复
liuyaf
LV.4
5
2008-10-29 11:32
@ice3fly
我也是新手,啥都不懂的噢!!互相学习噢,呵
我也是学了一点点,希望可以相互学习.
0
回复
pro-power
LV.5
6
2008-11-16 18:13
@pro-power
我学习的一本书上的有一个程序的开头是这样定义的:1:      tmr0          equ  01h2:      pcl          equ  02h3:      status        equ  03h4:      option_reg    equ  81h5:      intcon        equ  0bh......8:      tmr0b        equ  69:      count        equ  20h10:      rp0          equ  5h......以上都是定义寄存器的,比如第一句,就是定义地址是01h的寄存器取个代号为tmr0,如此类推.在此我请问大家,第8句是什么意思,因为后面的6不是代表地址的,实际上书上说是为定时器赋初始值为6,就是从6开始计时.请大家指教!!(同理第10句也是同样的问题)
谢谢大家的解答,我把我看的一本书《pic单片机实用教程-基础篇》上传给大家,希望对大家有帮助.

68471226830175.part1.rar

68471226830235.part2.rar
0
回复
pro-power
LV.5
7
2008-11-16 18:14
@pro-power
谢谢大家的解答,我把我看的一本书《pic单片机实用教程-基础篇》上传给大家,希望对大家有帮助.68471226830175.part1.rar68471226830235.part2.rar
0
回复
pro-power
LV.5
8
2008-11-16 18:14
@pro-power
继续,共4个压缩包68471226830339.part3.rar68471226830443.part4.rar
以上与大家分享,谢谢大家
0
回复
pro-power
LV.5
9
2008-11-16 18:19
@xiongls
前5句都是定义头文件的,你应该会在相应的.H文件中找到,编程的时候可以不管它.直接加一条#INCLUDE《PIC.H》就可以了,用汇编的话把《PIC.H》换成相应的型号.第8句是给TMR0寄存器赋值,从6开始记数或者定时.第9句是定义变量count的位置.第10句和1——5句是一样的,都是定义寄存器,相当于头文件.这些都是很简单的东西.光看书是不行的,下个编译器自己敲程序什么都明白了.另外单纯的MCU问题建议去其他网站,这个网站好象就这些问题回答较少.www.pic16.com可能会好些
请教高手,红外线遥控接收的程序是怎么写啊,能给个思路吗?下图是我绘制的红外接收头输出端的波形
500) {this.resized=true; this.width=500; this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}" onclick="if(!this.resized) {return true;} else {window.open('http://u.dianyuan.com/bbs/u/71/68471226830772.jpg');}" onmousewheel="return imgzoom(this);">
0
回复
njyd
LV.8
10
2008-11-19 23:07
@pro-power
我学习的一本书上的有一个程序的开头是这样定义的:1:      tmr0          equ  01h2:      pcl          equ  02h3:      status        equ  03h4:      option_reg    equ  81h5:      intcon        equ  0bh......8:      tmr0b        equ  69:      count        equ  20h10:      rp0          equ  5h......以上都是定义寄存器的,比如第一句,就是定义地址是01h的寄存器取个代号为tmr0,如此类推.在此我请问大家,第8句是什么意思,因为后面的6不是代表地址的,实际上书上说是为定时器赋初始值为6,就是从6开始计时.请大家指教!!(同理第10句也是同样的问题)
  俺下面说的是51系列单片机的,不知与你这个一样不一样.
  这个equ不一定要定义寄存器,有点类似一般程序语言中的 字符串常量赋值.
  equ前面的就是字符串常量名,后面的是字符串.
  这样定义后,在这个程序中,前面的就等同于后面的,比如说你那个第8行,编译时编译程序见到“tmr0b”这个词就用“6”代替,
  比如说在我的51汇编程序中定义了你的第8行:
  MOV a,#tmr0b 等同于 MOV a,#6
  使用equ的好处之一是,如果你的程序中有某个数值或寄存器要在多处统一修改时(不是运行中修改,是编程时修改),用了它可以在程序头改一处就行了,不必到程序中一处处去找.
0
回复
njyd
LV.8
11
2008-11-19 23:10
@pro-power
请教高手,红外线遥控接收的程序是怎么写啊,能给个思路吗?下图是我绘制的红外接收头输出端的波形[图片]500){this.resized=true;this.width=500;this.alt='这是一张缩略图,点击可放大。\n按住CTRL,滚动鼠标滚轮可自由缩放';this.style.cursor='hand'}"onclick="if(!this.resized){returntrue;}else{window.open('http://u.dianyuan.com/bbs/u/71/68471226830772.jpg');}"onmousewheel="returnimgzoom(this);">
  这是否有编码,编码规则?
0
回复
pro-power
LV.5
12
2008-11-20 16:23
@njyd
  这是否有编码,编码规则?
有规则的,前面是头,接着是8位的用户码,再接着是8位的数据码,最后是结尾,普通的遥控都是类似的.
0
回复
pro-power
LV.5
13
2008-11-20 16:25
@njyd
  俺下面说的是51系列单片机的,不知与你这个一样不一样.  这个equ不一定要定义寄存器,有点类似一般程序语言中的字符串常量赋值.  equ前面的就是字符串常量名,后面的是字符串.  这样定义后,在这个程序中,前面的就等同于后面的,比如说你那个第8行,编译时编译程序见到“tmr0b”这个词就用“6”代替,  比如说在我的51汇编程序中定义了你的第8行:  MOVa,#tmr0b等同于MOVa,#6  使用equ的好处之一是,如果你的程序中有某个数值或寄存器要在多处统一修改时(不是运行中修改,是编程时修改),用了它可以在程序头改一处就行了,不必到程序中一处处去找.
是的,我现在也搞懂了,谢谢指教
0
回复
hunter-007
LV.4
14
2009-04-10 14:08
@pro-power
继续,共4个压缩包68471226830339.part3.rar68471226830443.part4.rar
你的4个压缩包解压后从174页开始就打不开,不知是不是上传的问题.前面的可以,最后的也可打开,能否将第2、3个压缩包重传或是发到我的邮箱里,谢谢.
sunpower_wu@126.com
shuiping_wsp@163.com
0
回复
mysunuy
LV.2
15
2009-04-10 14:26
@xiongls
前5句都是定义头文件的,你应该会在相应的.H文件中找到,编程的时候可以不管它.直接加一条#INCLUDE《PIC.H》就可以了,用汇编的话把《PIC.H》换成相应的型号.第8句是给TMR0寄存器赋值,从6开始记数或者定时.第9句是定义变量count的位置.第10句和1——5句是一样的,都是定义寄存器,相当于头文件.这些都是很简单的东西.光看书是不行的,下个编译器自己敲程序什么都明白了.另外单纯的MCU问题建议去其他网站,这个网站好象就这些问题回答较少.www.pic16.com可能会好些
真是晕,EQU怎么是赋值的助记符了呢
EQU等同于C中的#defule  tmr0b  6
就是说以后定时器用到6的时候就不用写6了,直接写tmr0b就可以了,这样直观一点.
0
回复