作者skywalker353 ()
看板NTUBIME-102
标题[营队] 玉米田
时间Mon Jan 18 23:31:18 2010
大家好 我是今天讲解8051程式的宗诚
组合语言与C++有许多不同处,可能很多人不能迅速的适应
但相信人能很快进入状况的人也不在少数
而目前主要负责带领大家的学长姊只有四位,且星期二、三有一、两位学长会无法出席
教学人力相当吃紧,需要大家小组互助,甚至跨组帮忙也没关系
只要组内有同学不太了解情况
例如:看不懂程式、不知道电路在干麽
希望懂的人能先停下脚步,以教会组员为优先
因为这只是在学习,没有任何竞赛意味在里面
较快完成的小组,可能只是获得上天眷顾,没有奇怪的错误发生
例如:我曾经用过一条电线,能将直流电压转换成三角波电压,这根本是超自然现象!
因此衷心希望,大家能跨越组别互相教学、讨论
不用急着赶进度~
有任何疑问可以迅速抓住学长,或是已经完成的同学
千万别不好意思问人,也别吝啬教人唷~( 当然希望问与教的人态度也都不要太差啦 )
最後帮大家复习一下
下面是50年後都还应该记住,并且告诉孙子们的常识~
MOV A, P1 ;将後面 P1的值丢给 A,即 A = P1
INC A ;将 A + 1
DEC A ;将 A - 1
CPL A ;把 A的内容反向,即 00111100 -> 11000011
CJNE 的用法: ;Compare Jump Not Equal
CJNE A, #20, Not_Equal
Equal:
...... ;A = 20的话会进来执行这几行程式码
JMP Continue ;记得要用JMP 离开,否则会继续往下执行程式
Not_Equal:
...... ;A 不等於 20的话会从这里开始执行程式
;这里就不一定要加JMP,不加的话会直接进入Continue
Continue:
......
Delay的写法:
今天花了很久时间讲Delay,如果听不懂的话
至少会看 DJNZ R1, & 这行指令被执行了几次就好
此例子是执行了 20 * 100 次
Delay:
MOV R0, #20
DD1:
MOV R1, #100
DJNZ R1, $ ; $ 表示此行程式码的位址
;可以改写成 dd: DJNZ R1, dd
;意思是一样的
DJNZ R0, DD1
RET ;使用函式记得要加 Return
如果嫌 20 * 100 不够多,当然可以继续扩充成 20 * 50 * 100
Delay:
MOV R0, #20
DD1:
MOV R1, #50
DD2:
MOV R2, #100
DJNZ R2, $
DJNZ R1, DD2
DJNZ R0, DD1
RET
另外有非常好用,也最常用的 JB、JNB、JZ、JNZ
JB P1.0 Label ;若 P1.0 接脚读到 5 V 的电压,将直接跳至 Label 执行程式
...... ;若 P1.0 接脚读到 0 V,将往下执行此区域的程式
Label:
......
JNB 刚好相反,是读到 0 V 的时候会跳,5 V 的时候不跳
JZ Label ;若 A = 0 的话会跳至 Label 执行程式
...... ;若 A不等於 0的话,将执行此区域的程式
Label:
......
JNZ 刚好相反,是不等於 0的时候会跳
是不是非常简单呢!
抱歉有点晚 PO文,请大家告诉大家~
~( ̄▽ ̄)~(_△_)~( ̄▽ ̄)~(_△_)~( ̄▽ ̄)~
--
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.94.109
1F:推 nerv3890:水欧 01/18 23:42
2F:推 paul20:灯泡好有趣!! 01/18 23:45
3F:推 bw80409:器材问题真的没办法~"~真的学到很多东西! 01/18 23:51
4F:推 pipaho:大家加油!!有问题尽量多问没关系~(我是教学的学姐) 01/19 00:19
5F:推 nerv3890:天阿是学姊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! 01/19 00:25
6F:推 lty518:方姊姊~ 01/19 00:36
※ 编辑: skywalker353 来自: 140.112.94.109 (01/19 00:43)