请教 C语言 单片机程序 变成高手~读懂下面的程序。我需要改的是数码管中的计时时间 请问在程序中哪部分改

请教 C语言 单片机程序 变成高手~读懂下面的程序。我需要改的是数码管中的计时时间 请问在程序中哪部分改,第1张

NBG代表主干道绿灯时间,DXG支干道绿灯时间,H黄灯时返郑间,NB是主干道当前等待或通行时间,DX是支干道当前等待或通行时间。

这里只需要修改NBG=20,H=5,DXG=20。NB和DX初始值不重要,它们初始值没有被用到而是一直被赋值。所以只要修改孙世祥其他三个参数即可。绿则搏灯时间加上黄灯时间为通行时间。

首先:

function [sys,x0,str,ts] = modelfree(t,x,u,flag,c,d)

switch flag,

case 0

[sys,x0,str,ts] = md1InitializeSizes

case 2

sys = md1Updates(x,u)

case 3

sys = md1Outputs(t,x,u, c,d)

case {1,4,9}

sys = []

otherwise

error([‘Unhandled flag=’,num2str(flag)])

end

这段为运行的主函数,从这个函数开始执行,此函数的主体是一个switch分支语稿渣句,就是由变量flag的值选择case的入口,即当flag==0,就执行[sys,x0,str,ts] = md1InitializeSizes而这句键老悄中的md1InitializeSizes调用了下面的这个函数:

function [sys,x0,str,ts] = md1InitializeSizes

sizes = simsizes

sizes.NumContstates = 0

sizes.NumDiscstates = 3

sizes.NumOutputs = 1

sizes.NumInputs = 1

sizes.DirFeedthtough = 1

sizes.NumSampleTimes = 1

sys = simsizes(sizes)

x0 = [0.2,0.2,0]

str = []

ts = [-1,0]

执行完后跳到终点,就结束。

当flag==2时,就执行sys = md1Updates(x,u)而这句中的md1Updates(x,u)调用了下面的这个函数:

function sys = md1Updates(x,u)

f=x(2)+u(3)*(u(2)-x(2)*u(3))/(0.1+u(3)*u(3))

sys = [u(1)fx(3)]

执行完后跳到终点,就结束。

当flag==3时,就执行sys = md1Outputs(t,x,u, c,d)而这句中的md1Outputs(t,x,u, c,d)调用了下面的这个函数:

function sys = md1Outputs(t,x,u,c,d)

sys = c*x(2)*x(1)/(d+x(2)*x(2))

{ 如果我没猜错的话,你上面写的

function sys = md1Updates(t,x,u,c,d)

sys = c*x(2)*x(1)/(d+x(2)*x(2))

应该为含陵:

function sys = md1Outputs(t,x,u,c,d)

sys = c*x(2)*x(1)/(d+x(2)*x(2))

}

执行完后跳到终点,就结束。

当flag为1、4、9时,就执行:sys = []

当flag为其他值就执行error([‘Unhandled flag=’,num2str(flag)])这句显示一个错误的信息,Unhandled flag= 后面是将flag数值型转化为字符串。

首先闷轿问一下是什么程序? 先想办法运行,看看它是干什么的。 然后再找程序入口,不要一开始就一个方法一个方法的看码孝, 先了解一下每个方法的功能是什么,因为方法都是功能的封装体。 最后在针对重点方法看实现。 其实思想就是了解程序功能。然后把握整体框架,最后在看具体实现。 再者就是没事多读点,读的多了自然就有自己的技巧了。 以上个迟罩稿人总结,仅供参考...

希望采纳


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12318018.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存