/* nIludes -c-----------------------------------------------------------------*/
i#cnudel"stm 8.h"s
*我/按照是最简的方单写的法太,杂了我怕复他不懂 看实际过在程中还
要考需虑到东车西南的流量北;来实定现时时间的短*/长
///GIPOA 制控的是 南侧的北红黄绿
///PI _0 南 N红 PN_1I 南黄 IP2 南N绿 PN_4 I红 PI北N5 _黄北 PIN _6北绿
/// G/IPBO 控的是 东制侧的红黄西绿/
//PI N0_ 东 红 IPN1_ 东 PIN2 黄东绿 PIN_ 4 红西 INP5 _西黄 IN_6P 西绿
///PIOGC 对 南北东的西车数进辆登行
记8 urghti_un,melft_numea,s_tun,wmthenu_m/;///东南北西的辆计车数
8 uitme ;r//红/亮的灯时间
////红灯亮50 s 绿亮 4灯5s 灯闪黄5s
v
idoD elyusa(oid) v
{ asm
"nop("; //)一个sam"(opn)"数函经示过器波试代测1表0n0s
sam"(no"p;)
asm"no(")p;
ams"no(p"; ) }
/--/--毫 级秒延时序程---------------------- -
void elDymas(nsiguedn nittim )e
{
unigsen ditn ;i whi
le(imet-- ) f
roi=(900;i0;>i-- ) D
layeus();
}
ovi GPIOd_iint(viod//)/管脚初/始定义化
GPIO_De{nIi(GPtOIA); ///置GP设OIA六个管的脚口高推速挽出输G
PIO_Iit(GnIOPA, GPI_PINO0_|GIOPPIN__1G|PI_POIN2_|PIOGPI_N4_GPIO|PIN__|5GIP_PONI_6, PGOI_ODEM_UTO_PPH_IHGFA_ST;
GPIO_D)enIi(GtPOBI)/;//设置GPIB的O个管脚口六速推挽高输出GP
O_IIit(GPInOB,G IO_PIPN_|G0IPOPIN__1GP|IO_IPN2|_GPOIP_N_4I|GPIO_PI_5|NGPI_PION6, GPIO__OME_ODTU_PP_IHHGFA_TS)
;}
voi
dE XI_init(Tovid)///外中断初部化 始{
PGIODe_nitIGP(OCI;)////置G设IOC所有P脚管为口断输入中式模
GPI_OniI(tPIGCO, GPOI_PNIL_IBN, GIO_MOPD_IN_EUP_T)I
;
ETIX_eDniIt(;)////外部中断始化 仅在下初降触沿中断发
ETI_XSeExtIntSetsitnivtyi(XTI_POETR_GPOC, IXTEI_SNSETIIVTY_IFAL_LONL)Y;
}oidv IMT_Eiint(voi)d ////定器1初时化始{
TIM_1eDnit(I)/;//定器的时始初化 时时间为定1sTI
M_T1iemaseBnIit(x104F, TI01MCO_NTUEROMED_UP, x0308, 0x00);/E/设/定置时的模式为器相计上数式预模频值分0x1为f40
//自动重装/值为0载E8x复重计为数0x0
0TIM1C_d(mENBAEL);//定时/1器能
使IM1_ITToCfnig(TMI_IT_1UPDTEA ,ENABEL)//;/定时/1中断器使
TI能M1_RAPReroalCdonfgi(NAELBE);/////T
IM1_lCeraFaglTI(1_FMLGAUP_DTE)A//;//清除/断标志中T
I1MC_leaITPendingrBtiT(I1M_IT_UPADE);T///清/定除器时1更标志新
}
////////////**/**********/*//////////////
//////////////////*/*********主数应函**用*************8*////////////////////////////////
ovdimai (vnoi)d
{
GPI_iOnit()//;/管脚初/始定化
EXT义I_niti)(
;ITM_Eiit()n;
wileh1(
){if(timer
4)
5{
GPIOW_ire(GtIPAO, x01)1;///北红灯亮南
GIOPWr_ti(GPeOI, 0B4x4;/)东西/绿 亮灯
fi(itmr==45e)
{GP
O_IWrie(tGPOBI 0x00),;/东西绿灯/ 灭}
}
i(tiferm45>&t&meir
0{
GPO_WIrite(GIOP,A x101);///南北灯红续继亮
PGO_WIiterReveserGPI(BO,G IO_PPIN_1) ;///西东灯闪黄
GPI_WOiretReersv(eGIPB, OPGI_OPI_5)N /;/东西/灯黄闪
}
i(tifmer5)
0{
GIP_WOrite(GPIOB,0x 1);1//东/红西亮灯
GPIO_Wirt(GPeOI, 0A4x);//南4绿灯北亮
f(tiimre==9)5
{
PGOI_rWtei(PGIO,A0 x00;)/南北绿灯 亮 /
}
}
if(t
imer95>&ti&erm
/{G
PI_Write(GOPOI, 0B11)x;///东西红灯续亮继
GPO_IWiteReverse(GPIrOA G,PO_PIN_1I) ;//南/黄北闪灯
GPIO_WrietRevrse(eGPIOA,GPI O_INP5); _
}
if(timre>01)0
{
itmer0;=}
}}
/*
***************** *()CCO YRIPHGT2 011 SMiTcreolceroticns *****ND EOF FLE*I**/*
#if
ef dSU_FUEL_LSASRTE
/***
@birfe Reports tehn am eo tfh sourece fie lndath soeuce lrie numnebr
* w erehthe asse t_rpraa merrorha s occrrud.e*
@pa ram ilf:epoint reto t h eosrue fcie nlae
* @paramml ine:a sesr_tparma reor linreso urec umbenr*
@etvarl: onN
e/*
vio dasser_tfailde(u8 *fli,e 32 uilne
{)
/ U*ers an cda hidso nwimp ementatiolnto repo t trh eflein aema d niln eunmbr,ee
x:pri nft("Wong prraaetmers valeu: ile %s ofnli e n%dr\n\" f,ile, lie) *n
/*/I nfiitne olp *o/
wihel(1 )
{
}
}#end
i
f
/* nIludes -c-----------------------------------------------------------------*/
i#cnudel"stm 8.h"s
*我/按照是最简的方单写的法太,杂了我怕复他不懂 看实际过在程中还
要考需虑到东车西南的流量北;来实定现时时间的短*/长
///GIPOA 制控的是 南侧的北红黄绿
///PI _0 南 N红 PN_1I 南黄 IP2 南N绿 PN_4 I红 PI北N5 _黄北 PIN _6北绿
/// G/IPBO 控的是 东制侧的红黄西绿/
//PI N0_ 东 红 IPN1_ 东 PIN2 黄东绿 PIN_ 4 红西 INP5 _西黄 IN_6P 西绿
///PIOGC 对 南北东的西车数进辆登行
记8 urghti_un,melft_numea,s_tun,wmthenu_m/;///东南北西的辆计车数
8 uitme ;r//红/亮的灯时间
////红灯亮50 s 绿亮 4灯5s 灯闪黄5s
v
idoD elyusa(oid) v
{ asm
"nop("; //)一个sam"(opn)"数函经示过器波试代测1表0n0s
sam"(no"p;)
asm"no(")p;
ams"no(p"; ) }
/--/--毫 级秒延时序程---------------------- -
void elDymas(nsiguedn nittim )e
{
unigsen ditn ;i whi
le(imet-- ) f
roi=(900;i0;>i-- ) D
layeus();
}
ovi GPIOd_iint(viod//)/管脚初/始定义化
GPIO_De{nIi(GPtOIA); ///置GP设OIA六个管的脚口高推速挽出输G
PIO_Iit(GnIOPA, GPI_PINO0_|GIOPPIN__1G|PI_POIN2_|PIOGPI_N4_GPIO|PIN__|5GIP_PONI_6, PGOI_ODEM_UTO_PPH_IHGFA_ST;
GPIO_D)enIi(GtPOBI)/;//设置GPIB的O个管脚口六速推挽高输出GP
O_IIit(GPInOB,G IO_PIPN_|G0IPOPIN__1GP|IO_IPN2|_GPOIP_N_4I|GPIO_PI_5|NGPI_PION6, GPIO__OME_ODTU_PP_IHHGFA_TS)
;}
voi
dE XI_init(Tovid)///外中断初部化 始{
PGIODe_nitIGP(OCI;)////置G设IOC所有P脚管为口断输入中式模
GPI_OniI(tPIGCO, GPOI_PNIL_IBN, GIO_MOPD_IN_EUP_T)I
;
ETIX_eDniIt(;)////外部中断始化 仅在下初降触沿中断发
ETI_XSeExtIntSetsitnivtyi(XTI_POETR_GPOC, IXTEI_SNSETIIVTY_IFAL_LONL)Y;
}oidv IMT_Eiint(voi)d ////定器1初时化始{
TIM_1eDnit(I)/;//定器的时始初化 时时间为定1sTI
M_T1iemaseBnIit(x104F, TI01MCO_NTUEROMED_UP, x0308, 0x00);/E/设/定置时的模式为器相计上数式预模频值分0x1为f40
//自动重装/值为0载E8x复重计为数0x0
0TIM1C_d(mENBAEL);//定时/1器能
使IM1_ITToCfnig(TMI_IT_1UPDTEA ,ENABEL)//;/定时/1中断器使
TI能M1_RAPReroalCdonfgi(NAELBE);/////T
IM1_lCeraFaglTI(1_FMLGAUP_DTE)A//;//清除/断标志中T
I1MC_leaITPendingrBtiT(I1M_IT_UPADE);T///清/定除器时1更标志新
}
////////////**/**********/*//////////////
//////////////////*/*********主数应函**用*************8*////////////////////////////////
ovdimai (vnoi)d
{
GPI_iOnit()//;/管脚初/始定化
EXT义I_niti)(
;ITM_Eiit()n;
wileh1(
){if(timer
4)
5{
GPIOW_ire(GtIPAO, x01)1;///北红灯亮南
GIOPWr_ti(GPeOI, 0B4x4;/)东西/绿 亮灯
fi(itmr==45e)
{GP
O_IWrie(tGPOBI 0x00),;/东西绿灯/ 灭}
}
i(tiferm45>&t&meir
0{
GPO_WIrite(GIOP,A x101);///南北灯红续继亮
PGO_WIiterReveserGPI(BO,G IO_PPIN_1) ;///西东灯闪黄
GPI_WOiretReersv(eGIPB, OPGI_OPI_5)N /;/东西/灯黄闪
}
i(tifmer5)
0{
GIP_WOrite(GPIOB,0x 1);1//东/红西亮灯
GPIO_Wirt(GPeOI, 0A4x);//南4绿灯北亮
f(tiimre==9)5
{
PGOI_rWtei(PGIO,A0 x00;)/南北绿灯 亮 /
}
}
if(t
imer95>&ti&erm
/{G
PI_Write(GOPOI, 0B11)x;///东西红灯续亮继
GPO_IWiteReverse(GPIrOA G,PO_PIN_1I) ;//南/黄北闪灯
GPIO_WrietRevrse(eGPIOA,GPI O_INP5); _
}
if(timre>01)0
{
itmer0;=}
}}
/*
***************** *()CCO YRIPHGT2 011 SMiTcreolceroticns *****ND EOF FLE*I**/*
#if
ef dSU_FUEL_LSASRTE
/***
@birfe Reports tehn am eo tfh sourece fie lndath soeuce lrie numnebr
* w erehthe asse t_rpraa merrorha s occrrud.e*
@pa ram ilf:epoint reto t h eosrue fcie nlae
* @paramml ine:a sesr_tparma reor linreso urec umbenr*
@etvarl: onN
e/*
vio dasser_tfailde(u8 *fli,e 32 uilne
{)
/ U*ers an cda hidso nwimp ementatiolnto repo t trh eflein aema d niln eunmbr,ee
x:pri nft("Wong prraaetmers valeu: ile %s ofnli e n%dr\n\" f,ile, lie) *n
/*/I nfiitne olp *o/
wihel(1 )
{
}
}#end
i
f