下面是驱动STC89C52的GPIO操作方法汇总
STC89C52RC的所有IO口均有3种模式:准双向口/弱上拉(标准8051输出模式)、仅为输入(高阻)、开漏输出。
//包含定义了特殊功能的寄存器的文件
#include "reg52.h"
//使用sbit定义GPIO口的别名。如sbit name=Pn^m
sbit led=P1^3;
//改变GPIO的输出则直接赋值
led=1;
STC89C52RC实测汇编语言对GPIO置1,是低电平输出。
/*程序的起始位置,通常用0030H。前面的内容留给堆栈使用。
实际烧录用0000H,没用堆栈的程序。实际无堆栈下0000H有效果,0030H没有效果。*/
ORG 0000H
/*START是程序标号,便于跳转和调用*/
JMP START
/*有冒号一般表示一个标号。用于JMP跳转*/
START:
/*井号表示立即数。十六进制#0FEH。两位十六进制第一位不是0~9则前面必须加0。*/
MOV A,#0FFH
MOV P1,A
/*RET指令,子函数的返回,这里现象和JMP $(执行到这里就停止)一致。子函数调用常用到RET*/
JMP $
END
以下是等价表达。
/*和MOV A,#00H MOV P1,A等价的表达*/
MOV P1,#00H
/*或者一下之一,代表清零。也可以清零具体的IO口*/
CLR P1
CLR P1^0
CLR P1.0