服了,知道十六进制吗?15*16+15 |
ORG 0040H 这个语句的意思是后面的程序从0040H这个地址的程序存储空间开始 这个作用主要是为了避免一些隐性的冲突,比如定时器0的入口地址是000BH,其他还是外部中断的入口地址、串口通信的入口地址等等。其实从0030H这个地址以后都没有啥入口地址,所以在编写主程序前一般会加 ORG 0030H或0030以后 来避免主程序以一些入口地址产生冲突。 |
Y_G_G 发表于 2020-6-3 11:25 说的很详细,谢谢哥! |
#0FFH=#11111111B 8个1从左到右是端口7到0 MOV P1, #0FFH 意思是P1端口的P1.7到P1.0全都输出高电平 如果把P1换成P2就是P2的P2.7到P2.0都是高电平 想让哪个端口变低电平就把哪个1变成0 比如#7FH=#01111111B 就是P1.7为低电平 其它的为高电平 ORG我也不懂 删了它程序照样运行 |
不要纠结于这种没有多少重要性的问题,也不要想当然的去认为,编程是一个严谨的东西,没有“按道理来说”“正常情况下”“我觉得……”之类的,它只有“ 是”“不是” 1:0FFH=FF,0和H是编译器用规定的,FF就是一个两位16进制的数,它就是等于255,不等于F*F,88也一样的不等于8*8 它为什么让这个端口变成高电平:这个是8051单片机入门的基础知识,你不明白就说明你的基础不好,应该再去看一下基础 2:ORG 0040H的意思是:下面这个代码是从程序存储空间的0040H地址开始的,0040H换成其它的数值也是一样相对应的 正确的应该是: ORG 0000H LJMP MAIN ORG 0100H MAIN: ORG 0200H没有必要,一般来说,只有做表格的时候才会需要重新指定ORG的 |
angmall 发表于 2020-6-3 08:35 ffh,是255,那就是F*H+F?15*16+15?我这么理解可以吗 |
#0FFH是单片机汇编语言程序中一个来表示8位二进制数的16进制表示方法,#表示这是一个数字,0是汇编语言的规定,即当16进制数的高位数大于9时,前面要加0,FF是这个16进制数的数值,即255,H是16进制数的尾缀。 不是15*15 , 是 15*16 + 15 =255 是16进制的 |