永发信息网

c语言51 io口程序设计

答案:1  悬赏:40  手机版
解决时间 2021-03-19 00:57
  • 提问者网友:未信
  • 2021-03-18 19:48
我做设计最后一步软件设计要求用51单片机来处理数据,要求从外部CPLD模块读入数据N、n、Ts、fs和n1、n2六个数据,然后利用公式一:T=(Ts*n)/N 公式二:f=(N*fs)/n 公式三:M=[(n1-n2)*360]/(2*n2)分别计算出T、f和M的值,并且送给显示模块显示出来(十进制显示)。
附:其中还有四个控制按键,按键一控制公式一进行计算并显示计算结果;按键二控制公式二进行计算并显示计算结果;按键三控制公式三进行计算并显示计算结果;按键四为复位键

麻烦大家帮忙,我目前还没有财富值,谢谢了~·

用C语言进行编程
最佳答案
  • 五星知识达人网友:行雁书
  • 2021-03-18 20:53
//下列程序基本正确,剩下一些脉冲宽度定时,可自行完成。
#include
#define uchar unsigned char
#define uint unsigned int

sbit P00 = P0^0;
sbit P01 = P0^1;
sbit P02 = P0^2;

sbit k_1 = P3^0; //第一个输入

uchar t_10ms, k3;
//--------------------------------------
DL_x_10ms(uchar x)
{
t_10ms = 0;
TH0 = (65536 - 10000) / 256;
TL0 = (65536 - 10000) % 256; //定时10ms@12MHz
TR0 = 1; //启动定时.
while(t_10ms < x); //不到x*10ms,原地等待.
TR0 = 0; //关闭定时.
}
//--------------------------------------
void main(void)
{
TMOD = 01; //T0定时方式1
TH0 = (65536 - 10000) / 256;
TL0 = (65536 - 10000) % 256; //定时10ms@12MHz
TR0 = 0; //暂时不启动.
ET0 = 1;

IT0 = 1;
IT1 = 1;
EX0 = 0;
EX1 = 0;

EA = 1;
k3 = 1;
while(1) { //
//--------------------------------------
while((k_1 == 1) || (k3 == 0));//K1没有按,或者 K3尚未执行 原地等待.
//K1按了一次,就往下执行.
while(k_1 == 0); //等待K1释放.
k3 = 0; //以后K1按下两次、三次...,也不会执行.

//进入第一个中断,P0.0口输出低电平,P0.1口输出高电平,延时1.5S后P0.0口输出高电平。.
P00 = 0; P01 = 1;
DL_x_10ms(150);
P00 = 1;
EX0 = 1; //开放INT0(K2)中断
//循环到前面,等待(K1按下且K3=1)
}
}
//--------------------------------------
T0_INT() interrupt 1
{
TH0 = (65536 - 10000) / 256;
TL0 = (65536 - 10000) % 256; //定时10ms@12MHz
t_10ms++;
}
//--------------------------------------
X0_INT() interrupt 0 //K2输入下降沿,将进入本函数
{
//进入第二个中断,延时1.11S后P0.2口输出低电平,然后.
DL_x_10ms(111);
P02 = 0; //P0.2口输出低电平
//输出低电平多少时间?题目没有说。
//---------------------
//高0.15S,
P02 = 1; //P0.2口输出高.
DL_x_10ms(15);
//---------------------
//低0.3S,
P02 = 0; //P0.2口输出低电平.
DL_x_10ms(30);
//下面的定时,可以自行编写
//高0.3S,
//低0.58S,
//高0.12S,
//低1.08S,
//高2.55S,
//低0.47S,
//高0.075S,高低电平很多次这样。.
EX0 = 0;
EX1 = 1; //开放INT1(K3)中断
}
//--------------------------------------
X1_INT() interrupt 2
{
//当进入第三个中断,P0.1口输出低电平。.
P01 = 0;
EX1 = 0;
k3 = 1; //=1,将在主函数中有用
}
//--------------------------------------
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯