大家好,我是单片机的爱好者,正在学习PIC的单片机,在学习中遇到一些问题,希望大家不吝赐教.谢谢大家!
同时希望能与和我一样的初学者共同进步.
再次感谢!
PIC单片机学习提问,望高手解答
全部回复(14)
正序查看
倒序查看
现在还没有回复呢,说说你的想法
我学习的一本书上的有一个程序的开头是这样定义的:
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句也是同样的问题)
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
回复
提示
@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可能会好些
第8句是给TMR0寄存器赋值,从6开始记数或者定时.第9句是定义变量count的位置.第10句和1——5句是一样的,都是定义寄存器,相当于头文件.
这些都是很简单的东西.光看书是不行的,下个编译器自己敲程序什么都明白了.
另外单纯的MCU问题建议去其他网站,这个网站好象就这些问题回答较少.
www.pic16.com可能会好些
0
回复
提示
@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句也是同样的问题)
0
回复
提示
@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
回复
提示
@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的好处之一是,如果你的程序中有某个数值或寄存器要在多处统一修改时(不是运行中修改,是编程时修改),用了它可以在程序头改一处就行了,不必到程序中一处处去找.
这个equ不一定要定义寄存器,有点类似一般程序语言中的 字符串常量赋值.
equ前面的就是字符串常量名,后面的是字符串.
这样定义后,在这个程序中,前面的就等同于后面的,比如说你那个第8行,编译时编译程序见到“tmr0b”这个词就用“6”代替,
比如说在我的51汇编程序中定义了你的第8行:
MOV a,#tmr0b 等同于 MOV a,#6
使用equ的好处之一是,如果你的程序中有某个数值或寄存器要在多处统一修改时(不是运行中修改,是编程时修改),用了它可以在程序头改一处就行了,不必到程序中一处处去找.
0
回复
提示
@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
回复
提示
@njyd
俺下面说的是51系列单片机的,不知与你这个一样不一样. 这个equ不一定要定义寄存器,有点类似一般程序语言中的字符串常量赋值. equ前面的就是字符串常量名,后面的是字符串. 这样定义后,在这个程序中,前面的就等同于后面的,比如说你那个第8行,编译时编译程序见到“tmr0b”这个词就用“6”代替, 比如说在我的51汇编程序中定义了你的第8行: MOVa,#tmr0b等同于MOVa,#6 使用equ的好处之一是,如果你的程序中有某个数值或寄存器要在多处统一修改时(不是运行中修改,是编程时修改),用了它可以在程序头改一处就行了,不必到程序中一处处去找.
是的,我现在也搞懂了,谢谢指教
0
回复
提示
@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就可以了,这样直观一点.
EQU等同于C中的#defule tmr0b 6
就是说以后定时器用到6的时候就不用写6了,直接写tmr0b就可以了,这样直观一点.
0
回复
提示