跪求大神帮我51单片机编程一下吧!~用C语言,汇编都可以,看流程图编程序,谢谢了

2024-12-02 04:40:46
推荐回答(2个)
回答1:

*****************************************************************
假定传感器得到的电平直接连接在Pn口,从Pn0~Pn7分别对应传感器1~传感器7;

假设电机电机驱动输出由Pm口驱动,
Pm0对应电机A正转,Pm1对应电机A反转;
Pm2对应电机B正转,Pm3对应电机B反转;B
在这个前提下,以上的问题可以编程如下:
*****************************************************************
#define D0 Pn0 ;定义传感器D0
#define D1 Pn1 ;定义传感器D1
#define D2 Pn2 ;定义传感器D2
#define D3 Pn3 ;定义传感器D3
#define D4 Pn4 ;定义传感器D4
#define SEN5 Pn5 ;定义昼夜传感器

#define DAY 1 ;定义有光状态
#define NIGHT 0 ;定义无光状态

#define MOTO_A_ROT_RIGHT Pm0 ;定义电机A正转接口
#define MOTO_A_ROT_LEFT Pm1 ;定义电机A反转接口
#define MOTO_B_ROT_RIGHT Pm2 ;定义电机B正转接口
#define MOTO_B_ROT_LEFT Pm3 ;定义电机B反转接口

#define MOTO_ON 1 ;定义电机运转操作
#define MOTO_OFF 0 ;定义电机停止操作

;******************************************
init()
;初始化各类寄存器、端口、中断、定时器等
;……………………
;……………………
ret;

;******* 主程序 ****************************
main:
init();

start:
mov c, SEN5; ;读昼夜传感器
jnc start; ;无光,黑夜,返回

test_sen: ;检测各个传感器
mov c, D1;
jnc test_D3; ; D1无光,测D3
mov MOTO_A_ROT_RIGHT, MOTO_ON; ;D1有光,电机A正转
mov MOTO_A_ROT_LEFT , MOTO_OFF;
sjmp test_sen;

test_D3:
mov c, D3;
jnc test_D2; ; D3无光,测D2
mov MOTO_A_ROT_RIGHT, MOTO_OFF; ;D3有光,电机A反转
mov MOTO_A_ROT_LEFT , MOTO_ON;
sjmp test_sen;

test_D2:
mov c, D2;
jnc test_D4; ; D2无光,测D4
mov MOTO_B_ROT_RIGHT, MOTO_ON; ;D2有光,电机B正转
mov MOTO_B_ROT_LEFT , MOTO_OFF;
sjmp test_sen;

test_D4:
mov c, D4;
jnc test_D0; ; D4无光,测D0
mov MOTO_B_ROT_RIGHT, MOTO_OFF; ;D4有光,电机B反转
mov MOTO_B_ROT_LEFT , MOTO_ON;

test_D0:
mov c, D0;
jnc test_sen; ; D0无光,继续检测传感器
mov MOTO_A_ROT_RIGHT, MOTO_OFF; ;关闭电机A
mov MOTO_A_ROT_LEFT , MOTO_OFF;
mov MOTO_B_ROT_RIGHT, MOTO_OFF; ;关闭电机B

mov MOTO_B_ROT_LEFT , MOTO_OFF;
ljmp start;

回答2:

你好!光线自动跟踪系统?传感器采用的什么