真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

c語言外部中斷初始化函數(shù) c語言中中斷函數(shù)

交通燈 C語言 單片機(jī)。中斷函數(shù)問題

參考《51單片機(jī)C語言創(chuàng)新教程》溫子祺等著。

創(chuàng)新互聯(lián)專注于固鎮(zhèn)網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供固鎮(zhèn)營(yíng)銷型網(wǎng)站建設(shè),固鎮(zhèn)網(wǎng)站制作、固鎮(zhèn)網(wǎng)頁設(shè)計(jì)、固鎮(zhèn)網(wǎng)站官網(wǎng)定制、小程序制作服務(wù),打造固鎮(zhèn)網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供固鎮(zhèn)網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。

源碼轉(zhuǎn)自:《51單片機(jī)C語言創(chuàng)新教程》。

/*實(shí)驗(yàn)名稱:交通燈實(shí)驗(yàn)

*描????述:交通燈實(shí)驗(yàn)要求紅燈亮15秒,綠燈亮10秒,黃燈亮5秒,

當(dāng)紅燈切換為綠燈或者綠燈切換為紅燈,

???要實(shí)現(xiàn)燈閃爍。紅燈、綠燈、黃燈的點(diǎn)亮持續(xù)時(shí)間可以通過串口來修改,

???并在下一個(gè)循環(huán)中更新數(shù)值。

*作????者:溫子祺

*修改日期:2010/5/4

*說????明:代碼注釋與講解詳見《51單片機(jī)C語言創(chuàng)新教程》溫子祺等著,北京航空航天大學(xué)出版社

*/

#include?"stc.h"

typedef?unsigned?char???UINT8;

typedef?unsigned?int UINT16;

typedef?unsigned?long???UINT32;

typedef?char????????????INT8;

typedef?int?????????????INT16;

typedef?long????????????INT32;

#define?TIMER0_INITIAL_VALUE?5000

#define?HIGH???????????????1

#define?LOW????????????????0

#define?ON?????????????????1

#define?OFF????????????????0

#define?SEG_PORT???????????P0

#define?LS164_DATA(x)??????{if((x))P0_4=1;else?P0_4=0;}

#define?LS164_CLK(x)???????{if((x))P0_5=1;else?P0_5=0;}

#define?NORTH_R_LIGHT(x)???{if((x))P2_0=0;else?P2_0=1;}

#define?NORTH_Y_LIGHT(x)???{if((x))P2_1=0;else?P2_1=1;}

#define?NORTH_G_LIGHT(x)???{if((x))P2_2=0;else?P2_2=1;}

#define?SOUTH_R_LIGHT(x)???{if((x))P2_3=0;else?P2_3=1;}

#define?SOUTH_Y_LIGHT(x)???{if((x))P2_4=0;else?P2_4=1;}

#define?SOUTH_G_LIGHT(x)???{if((x))P2_5=0;else?P2_5=1;}

#define?TRAFFIC_STATUS_1???0

#define?TRAFFIC_STATUS_2???1

#define?TRAFFIC_STATUS_3???2

#define?UART_MARKER????????0xEE

UINT8??Timer0IRQEvent=0;

UINT8??Time1SecEvent=0;

UINT8??Time500MsEvent=0;

UINT8??TimeCount=0;

UINT8??SegCurPosition=0;

UINT8??LightOrgCount[4]={15,5,15,5};

UINT8??LightCurCount[4]={15,5,15,5};

UINT8??TrafficLightStatus=0;

code?UINT8??SegCode[10]???={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};

UINT8??SegBuf[4]?????={0};

code?UINT8??SegPosition[4]={0x07,0x0b,0x0d,0x0e};

typedef?struct?_LIGHT_VAL

{

UINT8?Head;

UINT8?val[4];

}LIGHT_VAL;

typedef?union?_LIGHT_VAL_EX

{

LIGHT_VAL?lv;

UINT8????p[5];

}LIGHT_VAL_EX;

void?LS164Send(UINT8?byte)

{

UINT8?j;

for(j=0;j=7;j++)

{

if(byte(1(7-j)))

{

LS164_DATA(HIGH);

?}

?else

?{

LS164_DATA(LOW);

?}

LS164_CLK(LOW);

LS164_CLK(HIGH);

}

}

void?RefreshDisplayBuf(UINT8?s1) ?//刷新顯示緩存

{

SegBuf[0]?=?s1%10;

SegBuf[1]?=?s1/10;

SegBuf[2]?=?s1%10;

SegBuf[3]?=?s1/10;

}

void?SegDisplay(void)

{

UINT8??t;

t?=?SegCode[SegBuf[SegCurPosition]];

SEG_PORT?|=?0x0f;

LS164Send(t);

SEG_PORT?=?(SEG_PORT|0x0f)??SegPosition[SegCurPosition];

if(++SegCurPosition=4)

{

SegCurPosition=0;

}

}

void?TimerInit(void)

{

TH1?=?0;

TL1?=?0;

TH0?=?(65536-TIMER0_INITIAL_VALUE)/256;

TL0?=?(65536-TIMER0_INITIAL_VALUE)%256;?//定時(shí)1MS

TMOD?=?0x51; /*01010001?T1計(jì)數(shù),T0定時(shí)*/

}

void?Timer0Start(void)

{

TR0?=?1; //啟動(dòng)計(jì)時(shí)器1

?ET0?=?1;

}

void?Timer0Stop(void)

{

TR0?=?0; //啟動(dòng)計(jì)時(shí)器1

ET0?=?0;??

}

void?PortInit(void)

{

?P0=P1=P2=P3=0xFF;

}

void?UartInit(void)

{

SCON=0x40;

T2CON=0x34;

RCAP2L=0xD9;

RCAP2H=0xFF;

REN=1;

ES=1;

}

void?UartSendByte(UINT8?byte)

{

SBUF=byte;

while(TI==0);

TI=0;

}

void?UartPrintfString(INT8?*str)

{

while(str??*str)

{

UartSendByte(*str++);

}

}

void?main(void)

{

UINT8?i=0;

PortInit();

TimerInit();

Timer0Start();

UartInit();

RefreshDisplayBuf(LightCurCount[0]);

EA=1;

NORTH_R_LIGHT(ON);

SOUTH_G_LIGHT(ON);

while(1)

{

if(Timer0IRQEvent)

{

Timer0IRQEvent=0;

TimeCount++;

if(TimeCount=200)

{

TimeCount=0;

if(LightCurCount[0])

{

TrafficLightStatus=0;

}

else?if(LightCurCount[1])

{

TrafficLightStatus=1;

}

else?if(LightCurCount[2])

{

TrafficLightStatus=2;

}

else?if(LightCurCount[3])

{

TrafficLightStatus=3;

}

else

{

for(i=0;i4;i++)

{

LightCurCount[i]=LightOrgCount[i];

}

TrafficLightStatus=0;

}

switch(TrafficLightStatus)

{

case?0:

{

NORTH_R_LIGHT(ON);

SOUTH_R_LIGHT(OFF);

NORTH_G_LIGHT(OFF);

SOUTH_G_LIGHT(ON);

NORTH_Y_LIGHT(OFF);

SOUTH_Y_LIGHT(OFF);

}

break;

case?1:

{

if(LightCurCount[1]%2)

{

???NORTH_R_LIGHT(ON);

SOUTH_G_LIGHT(ON);

}

else

{

???NORTH_R_LIGHT(OFF);

SOUTH_G_LIGHT(OFF);

}

NORTH_Y_LIGHT(ON);

SOUTH_Y_LIGHT(ON);

}

break;

case?2:

{

NORTH_R_LIGHT(OFF);

SOUTH_R_LIGHT(ON);

NORTH_G_LIGHT(ON);

SOUTH_G_LIGHT(OFF);

NORTH_Y_LIGHT(OFF);

SOUTH_Y_LIGHT(OFF);

}

break;

case?3:

{

if(LightCurCount[3]%2)

{

???NORTH_G_LIGHT(ON);

SOUTH_R_LIGHT(ON);

}

else

{

???NORTH_G_LIGHT(OFF);

SOUTH_R_LIGHT(OFF);

}

NORTH_Y_LIGHT(ON);

SOUTH_Y_LIGHT(ON);

}

break;

default:break;

}

RefreshDisplayBuf(LightCurCount[TrafficLightStatus]);

LightCurCount[TrafficLightStatus]--;

}

SegDisplay();

}

}

}

void?UartIRQ(void)interrupt?4

{

static?UINT8?cnt=0;

static?LIGHT_VAL_EX?LightValEx;

if(RI)

{

RI=0;

?LightValEx.p[cnt++]=SBUF;

if(LightValEx.lv.Head?==?UART_MARKER)

{??

if(cnt=5)

{

for(cnt=1;cnt5;cnt++)

{

LightOrgCount[cnt-1]=LightValEx.lv.val[cnt];

LightCurCount[cnt-1]=LightValEx.lv.val[cnt];

}

cnt=0;

UartPrintfString("設(shè)置交通燈完成\r\n");

}

}

else

{

cnt=0;

}

}

}

void?Timer0IRQ(void)?interrupt?1

{

ET0 =??0;

TH0?=?(65536-TIMER0_INITIAL_VALUE)/256;

TL0?=?(65536-TIMER0_INITIAL_VALUE)%256;?//定時(shí)1MS

Timer0IRQEvent=1;

ET0 =??1;

}

=====================================================================

坐等拿分!

求一個(gè)單片機(jī)的外部中斷。 要求c語言完成中斷實(shí)驗(yàn)及中斷優(yōu)先權(quán)實(shí)驗(yàn),分別用三個(gè)數(shù)碼管表示仿真和程序

我用單片機(jī)做小車,用C語言編程,想用中斷但是不知道怎么用,比如小車跑的好好的,來了個(gè)信號(hào)他就可以中止現(xiàn)在的程序執(zhí)行另一個(gè)程序,但是又不能用查詢的方式一直查是否有這個(gè)信號(hào)來,所以要用到中斷,誰知道指點(diǎn)一下我啊,最好是有程序?qū)嵗?,謝謝~~

最佳答案 #include reg51.h

void init(void)//聲明中斷初始化

{ EA=1;//中斷總開關(guān)

EX0=1;//開中斷0開關(guān)。中斷1為,EX1=1;

IT1=1;//采用邊沿觸發(fā),下降沿有效。IT1=0為低電平觸發(fā)中斷。

}

main()

{ init();調(diào)用中斷初始化函數(shù)

==

===主程序;

}

void in_0(void)interrupt 0//中斷服務(wù)函數(shù)

{ ==

==要服務(wù)的程序

}

C語言編寫外部中斷1為跳沿觸發(fā)的中斷初始化函數(shù)

1.SETB EA ;中斷總允許

SETB EX1 ;外中斷1允許

SETB IT1 ;脈沖方式(當(dāng)IT1為0時(shí),為電平方式)

然后就可以定義你要的初值。

2.邊沿觸發(fā)最大的特點(diǎn)是只在水平的邊緣改變外翻蓋獎(jiǎng)勵(lì)的那一刻是有效的。相對(duì)JK主站和從站中,良好的穩(wěn)定性的優(yōu)點(diǎn),激勵(lì)電平只需要保證在短時(shí)間內(nèi)向邊緣穩(wěn)定,外界干擾的窗口是小的。

AT89C51單片機(jī),定時(shí)器1,50ms中斷,用c語言寫出初始化程序和中斷函數(shù)程序

#include reg51.h

void InitTimer1(void)

{

TMOD = 0x10;

TH1 = 0x3C;

TL1 = 0x0B0;

EA = 1;

ET1 = 1;

TR1 = 1;

}

void main(void)

{

InitTimer1();

}

void Timer1Interrupt(void) interrupt 3

{

TH1 = 0x3C;

TL1 = 0x0B0;

//add your code here!

}

單片機(jī)C語言中,設(shè)外中斷為邊沿觸發(fā), 高級(jí)中斷 編寫中斷初始化main的函數(shù)

這是單片機(jī)c語言中斷函數(shù)的編程格式,()后面的只是告訴編譯系統(tǒng)該函數(shù)是一個(gè)中斷函數(shù),具體的執(zhí)行還是按照c語言函數(shù)的執(zhí)行方式去執(zhí)行。


新聞名稱:c語言外部中斷初始化函數(shù) c語言中中斷函數(shù)
當(dāng)前網(wǎng)址:http://weahome.cn/article/hhddoc.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部