跪求大神帮我51单片机编程一下吧!~用C语言,汇编都可以,看流程图编程序,谢谢了
意法半导体(中国)投资有限公司
2023-06-12
展开全部
展开全部
*****************************************************************
假定传感器得到的电平直接连接在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;
假定传感器得到的电平直接连接在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;
意法半导体(中国)投资有限公司
2023-06-12 广告
2023-06-12 广告
单片机是一种集成电路芯片。又称单片微控制器,是把一个计算机系统集成到一个芯片上。相当于一个微型的计算机,和计算机相比,单片机只缺少了I/O设备。一块芯片就成了一台计算机。特点是体积小、质量轻、价格便宜、为学习、应用和开发提供了便利条件。
单...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询