世纪电源网社区logo
社区
Datasheet
标题
返回顶部
未解决

求助【求助一下实现这个功能的单片机程序】自己稍微写了点

[复制链接]
查看: 593 |回复: 13
1
hxcctt
  • 积分:183
  • |
  • 主题:4
  • |
  • 帖子:13
积分:183
LV2
本网技师
  • 2015-5-15 09:19:40
10问答币
要求如下,单片机用S3F94C8【放上来了这个单片机的说明书】
四输入 P2.0 P2.1 P2.2 P2.3 输出P0.0 P0.1 P0.2【其中四个输入端口输入电压均为24V信号】
如果输入的四个端口电压 P2.0+P2.1+P2.2+P2.3>30V 则P0.0=P0.1=P0.2= 0V 低电平【为了防止输入端同时有两个及以上的输入信号】
如果10V<2.0+P2.1+P2.2+P2.3<30v,其中
如果P2.0>10V 则P0.0=24V 高电平 P0.1延迟0.6秒后输出24V高电平
如果P2.1>10V 则P0.0=24V高电平 P0.2延迟0.6秒后输出24V高电平
如果P2.2>10V 则P0.0=0V 低电平 P0.1=24V 高电平
如果P2.3>10V 则P0.0=0V 低电平 P0.2=24V 高电平
程序我写了一下,初始化不会,然后感觉程序也有点问题
void test(P2.0,P2.1,P2.2,P2.3,P0.0,P0.1,P0.2)

{

if (sum (P2.0,P2.1,P2.2,P2.3)>30)

{

P0.0=P0.1=P0.2=0;

exit;

}

else

{

if (P2.0>10)

{

P0.0=1;

delay(60);

P0.1=1;

exit();

}

else if (P2.1>10)

{

P0.0=1;

delay(60);

P0.1=1;

exit();

}

else if (P2.2>10)

{

P0.0=0;

P0.1=1;

exit();

}

else if (P2.3>10)

{

P0.0=0;

P0.2=1;

exit();

}

}

}

void main()

{

/*各种初始化和定义*/

}

077509um_S3F94C8_rev100_CN.pdf

收藏收藏
tang490116827
  • 积分:1491
  • |
  • 主题:9
  • |
  • 帖子:289
积分:1491
LV6
高级工程师
  • 2015-5-15 10:43:39
 
你这是用C写的吗
hxcctt
  • 积分:183
  • |
  • 主题:4
  • |
  • 帖子:13
积分:183
LV2
本网技师
  • 2015-5-15 11:14:32
 
是啊是啊。。刚接触这个,课后题
tang490116827
  • 积分:1491
  • |
  • 主题:9
  • |
  • 帖子:289
积分:1491
LV6
高级工程师
  • 2015-5-15 13:20:03
 
你是学生吗,没有ADC的IO口只能判断高低电位
hxcctt
  • 积分:183
  • |
  • 主题:4
  • |
  • 帖子:13
积分:183
LV2
本网技师
  • 2015-5-15 13:31:46
  • 倒数10
 
这个这个单片机有的数模转换,老大能不能帮我一下初始化不太懂,主程序不知道能不能实现
tang490116827
  • 积分:1491
  • |
  • 主题:9
  • |
  • 帖子:289
积分:1491
LV6
高级工程师
  • 2015-5-15 13:34:06
  • 倒数9
 
那还有很多副程式没见你搬出来啊,你的主程式里面什么都没写
hxcctt
  • 积分:183
  • |
  • 主题:4
  • |
  • 帖子:13
积分:183
LV2
本网技师
  • 2015-5-15 14:17:03
  • 倒数8
 
额,主要就是这个,没有其他的了,就是初始化我在说明书里面找到的,但是不知道对不对,
#include<zl.h>
unsigned char P2.0,P2.1,P2.2,P2.3,P0.0,P0.1,P0.2;
ORG 003CH
DB OOH
DB OOH
DB 0E7H
DB 03H
void test(P2.0,P2.1,P2.2,P2.3,P0.0,P0.1,P0.2);
然后后面就和上面一样,我在想,I/O口输入后是不是经过ADC转换成模拟信号,那后面程序里面的IF语句是不是都是错的啊,要用模拟信号判断?跪求
tang490116827
  • 积分:1491
  • |
  • 主题:9
  • |
  • 帖子:289
积分:1491
LV6
高级工程师
  • 2015-5-15 14:31:04
  • 倒数7
 
看你的原理图,应该用P0作为IO输入,P0.0,P0.1,P0.2才有ADC功能脚
tang490116827
  • 积分:1491
  • |
  • 主题:9
  • |
  • 帖子:289
积分:1491
LV6
高级工程师
  • 2015-5-15 14:33:16
  • 倒数6
 
多读看一下此款单片机的资料,每个公司都有他们单片机的软件和工具,只要把里面所要用的资料搬出来应用就好了,程序的写法都一样
hxcctt
  • 积分:183
  • |
  • 主题:4
  • |
  • 帖子:13
积分:183
LV2
本网技师
  • 2015-5-15 14:41:49
  • 倒数5
 
如果按照我这样接的话是不是程序里面要改一下,改程序IF语句里面的判断就是 if (sum (P2.0,P2.1,P2.2,P2.3)>2)
,如果P0.0这几个口作为输出的话,是不是经过数模转换成电信号了,那程序要怎么改呢
if (sum (P2.0,P2.1,P2.2,P2.3)>2)
{
P0.0=P0.1=P0.2=0;
exit;
输出的P0.0是0V还是低电压意义的“0”,应该是具体的电压吧



那输出的应该是具体电压就可以触发MOS管了吧。
tang490116827
  • 积分:1491
  • |
  • 主题:9
  • |
  • 帖子:289
积分:1491
LV6
高级工程师
  • 2015-5-15 15:17:17
  • 倒数4
 
P0做输入,P2做输出做MOS驱动
victory_201314
  • 积分:103
  • |
  • 主题:0
  • |
  • 帖子:2
积分:103
LV2
本网技师
  • 2015-5-15 15:59:35
  • 倒数3
 
单片机端口能直接输入24V这么高的电压?我没看错吧
tang490116827
  • 积分:1491
  • |
  • 主题:9
  • |
  • 帖子:289
积分:1491
LV6
高级工程师
  • 2015-5-15 16:01:41
  • 倒数2
 
单片机电源能接这么高的电压我没见过,一般的单片机电源是5V或者3.3V
tang490116827
  • 积分:1491
  • |
  • 主题:9
  • |
  • 帖子:289
积分:1491
LV6
高级工程师
最新回复
  • 2015-5-15 16:09:16
  • 倒数1
 
好好阅读资料
热门技术、经典电源设计资源推荐

世纪电源网总部

地 址:天津市南开区黄河道大通大厦8层

电 话:400-022-5587

传 真:(022)27690960

邮 编:300110

E-mail:21dy#21dianyuan.com(#换成@)

世纪电源网分部

广 东:(0755)82437996 /(138 2356 2357)

北 京:(010)69525295 /(15901552591)

上 海:(021)24200688 /(13585599008)

香 港:HK(852)92121212

China(86)15220029145

网站简介 | 网站帮助 | 意见反馈 | 联系我们 | 广告服务 | 法律声明 | 友情链接 | 清除Cookie | 小黑屋 | 不良信息举报 | 网站举报

Copyright 2008-2024 21dianyuan.com All Rights Reserved    备案许可证号为:津ICP备10002348号-2   津公网安备 12010402000296号