/************************************
初学C++,这是个测试程序,设计的想法是,把最普遍的IO口,作一个对象来看待。
指定一个端口,构造一个端口对象
*************************************/
#include<ioat89c51.h>
class Led{
private:
bool LED_IO; //位变量,但如何指向构造函数的参数。
public:
Led(bool b){ //此处怎样写,让LED_IO 指向b(即P3_bit.P3_0)
}
void on(){
LED_IO=1;
}
void off(){
LED_IO=0;
}
};
void delayms(int ms){
while(ms--)
for(int i=0;i<1000;i++);
}
int main(){
Led led1(P3_bit.P3_0);
while(1){
led1.on();
delayms(100);
led1.off();
delayms(100);
}
}
这样写,不是为了标新立异,是想从这里开始把MCU所有内部资源作为对象的方式编程。但构造函数不知道如何写,才能把LED_IO与P3.0等同起来。对LED_IO的操作可以影响P3.0.
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
#define IO_TEST IO_TICC_OBJECT_DEF(1,0) //P1_0
uint8 io_read;
int main()
{
IO_TEST<<IO_MAKE_OUT; //设置为输出
IO_TEST<<IO_MAKE_OUT_LOW; //设置为输出,且输出低
IO_TEST<<0<<IO_MAKE_OUT; //设置为输出,且输出低
IO_TEST<<0<<1; //输出低,再输出高
IO_TEST<<1<<0<<IO_TOGGLE; //输出搞,再输出低,再翻转
IO_TEST>>io_read; //读取电平到io_read;
//读到的电平再写回IO口
IO_TEST<<io_read;
while(1);
}
汇编代码:
RSEG NEAR_CODE:CODE:NOROOT(0)
// 6 int main()
main:
CODE
// 7 {
; Auto size: 0
// 8 IO_TEST<<IO_MAKE_OUT; //设置为输出
ORL 0xfe,#0x1
// 9 IO_TEST<<IO_MAKE_OUT_LOW; //设置为输出,且输出低
CLR 0x90.0
ORL 0xfe,#0x1
// 10 IO_TEST<<0<<IO_MAKE_OUT; //设置为输出,且输出低
CLR 0x90.0
ORL 0xfe,#0x1
// 11
// 12 IO_TEST<<0<<1; //输出低,再输出高
CLR 0x90.0
SETB 0x90.0
// 13
// 14 IO_TEST<<1<<0<<IO_TOGGLE; //输出搞,再输出低,再翻转
SETB 0x90.0
CLR 0x90.0
XRL 0x90,#0x1
// 15
// 16 IO_TEST>>io_read; //读取电平到io_read;
MOV C,0x90.0
JNC ??main_0
SETB 0x90.0
SJMP ??main_1
??main_0:
CLR 0x90.0
// 17 //读到的电平再写回IO口
// 18 IO_TEST<<io_read;
// 19
一周热门 更多>