1. 以AT89C51單片機為控制器的智能交通燈控制系統,基於51單片機的交通信號燈模擬系統控制的模擬圖及C程序
你好!
這樣的效果可以嗎
2. 用單片機做交通燈,這么做
基於單片機的交通燈設計
時間:2010-12-08 21:43:12 來源: 作者:
一、 系統功能要求:
1. 設計任務在一十字路口設置交通燈,並用單片機對其進行合理的控制。
時間方向 控制要求
白天 東西 綠燈 黃燈 紅燈 南北 紅燈 綠燈 黃燈
晚上 東西 黃燈 南北 紅燈
2.總體設計方案現在流行的一種設計為兩主幹線相交的十字路。本設計採用一主幹道(南北方向),一從幹道(東西方向)的路口,即主幹道的通行時間為從幹道的2倍。在正常情況下,兩幹道的交通燈按圖1進行轉換,並以倒計數的方式將剩餘時間顯示在每個幹道對應的兩位LED上;另發揮部分為當出現緊急情況時,路口的交通燈全為紅燈,緊急情況解除時,恢復到原來的狀態。
二、 總體設計方案提示:
1.假設一個十字路口為東西南北走向。初始狀態0為東西紅燈,南北紅燈。然後轉狀態1東西綠燈通車,南北紅燈。過一段時間轉狀態。
2.東西綠燈滅,黃燈閃爍幾次,南北仍然紅燈。再轉狀態。
3.南北綠燈通車,東西紅燈。過一段時間轉狀態。
4.南北綠燈滅,閃幾次黃燈,延時幾秒,東西仍然紅燈。最後循環至狀態1。
三.硬體設計
電路原理圖如下:
四、軟體設計
1、 流程圖
2、程序設計
ORG 0000H
MOV P0,#00H ;確保P0為低電位
lJMP MAIN0
ORG 0030H
MAIN0: MOV 30H,#08H
MOV R6,#00H
MOV R7,#00H
MOV DPTR,#TABLE ;取數碼管的解碼
MOV TMOD,#01H ;設計定時方式及時間
MOV TL0,#0CDH
MOV TH0,#0BH
SETB TR0
MOV IE,#00H
MAIN: MOV P1,#0F3H ;南北綠燈,東西紅燈
MOV R6,#1EH ;紅燈30s倒計時
MOV R7,#19H ;綠燈25s倒計時
MAIN1:CALL DELAY ;1S延時子程序
JB P0.1,REL1 ;判斷是否有東西方向按鈕按下
CJNE R7,#00H,MAIN1 ;判斷綠燈25s是否倒計完
MOV P1,#0F5H ;南北黃燈,東西紅燈
MAIN2:CALL DELAY
MOV R7,#00H ;紅燈繼續倒計時,黃燈閃爍,保持0s
CPL P1.1 ;黃燈閃爍
CJNE R6,#00H,MAIN2 ;判斷紅燈是否倒計時完
MOV P1,#0DEH ;南北紅燈,東西綠燈
MOV R7,#1EH
MOV R6,#19H
MAIN3:CALL DELAY
JB P0.0,REL2
CJNE R6,#00H,MAIN3
MOV P1,#0EEH
MAIN4:CALL DELAY
MOV R6,#00H
CPL P1.4
CJNE R7,#00H,MAIN4
JMP MAIN
REL1:MOV P1,#0F5H ;東西方向按鈕按下,南北方向強制由綠燈變成黃燈警告
MOV R6,#05H
MOV R7,#00H
JMP MAIN2
REL2:MOV P1,#0EEH ;南北方向按鈕按下,東西方向強制由綠燈變成黃燈警告
MOV R7,#05H
MOV R6,#00H
JMP MAIN4
;1s延時子程序
DELAY:MOV A,R6 ;進行南北方向倒計時時間的十進制調整
MOV B,#0AH
DIV AB
MOVC A,@A+DPTR ;找尋相應的數碼管代碼
MOV P2,#01H
MOV P3,A ;輸出個位
MOV R4,#4 ;降低動態顯示頻率
LOOP2:MOV R3,#125
LOOP3:DJNZ R3,LOOP3
DJNZ R4,LOOP2
MOV A,B
MOVC A,@A+DPTR
MOV P2,#02H ;輸出十位
MOV P3,A
MOV R4,#4
LOOP4:MOV R3,#125
LOOP5:DJNZ R3,LOOP5
DJNZ R4,LOOP4
MOV A,R7 ;進行東西方向倒計時時間的十進制調整
MOV B,#0AH
DIV AB
MOVC A,@A+DPTR
MOV P2,#04H
MOV P3,A
MOV R4,#4
LOOP6:MOV R3,#125
LOOP7:DJNZ R3,LOOP7
DJNZ R4,LOOP6
MOV A,B
MOVC A,@A+DPTR
MOV P2,#08H
MOV P3,A
MOV R4,#4
LOOP8:MOV R3,#125
LOOP9:DJNZ R3,LOOP9
DJNZ R4,LOOP8
JBC TF0,LOOP ;判斷是否計滿125ms
AJMP DELAY
LOOP:MOV TL0,#0CDH ;計滿125ms重新給定時器賦值
MOV TH0,#0BH
MOV A,30H
DEC A
MOV 30H,A
JNZ DELAY ;判斷是否計滿8次125ms,即1s
DEC R6 ;計滿1s,東西倒計時減1,南北倒計時減1
DEC R7
MOV 30H,#08H ;重新1s次數,重新計時
RET
TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H ;相應數值的數碼管代碼
DB 92H,82H,0F8H,80H,90H
END
3. 基於單片機的交通燈控制系統設計(課設)
不知道你遠程式控制制系統是機器自動完成還是人工。如果要自動檢測車流量,你需要一個紅外線或者超聲波感測器,接在中斷口上,在路口前方x米的地方計數,然後用有線或者無線的方式傳送給主控器,主控器根據兩方四個計數器的計數來比較,按百分比分配時間。
然後控制相應的燈亮。
燈用發光二極體做,三色的四組,共陰,io口輸出高電平亮。
還是比較簡單的,畢業設計自己做吧,原理是這樣。如果有人幫你做了,你還是不會。以後出來找工作,靠的還是本事哦。
4. 基於單片機的智能交通燈控制系統基本設計方案
到淘寶網上找找:「51單片機交通燈控制系統送模擬圖」,有現成的。
或是到網路文庫中找找,參考論文也比較多。
5. 單片機中十字路口交通信號燈的過程,內容,原理
基於單片機的十字路口交通燈設計
摘要:知道了交通燈的重要性,而對於交通燈最重要的是單片機。跟隨單片機的應用正在不斷深入,同時帶動傳統控制檢測技術日益更新。在實時檢測和自動控制的單片機應用系統中,單片機通常作為一個核心部件來使用,僅憑對單片機簡單了解是不夠的,應該根據具體硬體結構並且軟硬體結合,實現自己想要達到的目的。單片機自問世以來,性能不斷提高和完善,所以實用許多場合。單片機具有集成度高、功能多、速度快、體積小、功耗低、使用方便、性能可靠、價格便宜,其易於產品化、抗干擾能力強、可以在惡劣的情況下堅持工作。特別是它強大的面向控制能力,使它在工業控制領域,智能儀表、外設控制、家用電器、機器人、軍事裝置等方面得到了廣泛的應用。 考慮到單片機具有物美價廉、靈活方便、還有各種優秀的特點,所以我們從中選擇用MCS-51系列單片機AT89C51單片機來實現十字路口交通信號燈的控制。單片機系統的實體和裝置,通常由運算器、控制器、存儲器、輸入介面電路和輸入設備、輸出介面電路和輸出設備等組成。單片機實質上是一個硬體的晶元,在實際應用中,通常很難直接和被控對象進行電氣連接,必須外加各種擴展介面電路、外部設備、被控對象等硬體和軟體,才能構成一個單片機應用系統。該交通燈擬系統的硬體部分主要由鍵盤、顯示和運算部分組成,再根據實際車流量通過8051晶元的P3口設置紅、綠燈燃亮時間的功能;紅綠燈循環點亮,倒計時剩5秒時黃燈閃爍警示(交通燈信號通過P1口輸出,顯示時間通過P0口輸出至雙位數碼管)。本系統設計周期短、可靠性高、實用性強、操作簡單、維護方便、擴展功能強。
關鍵詞:單片機、MCS-51系列單片機AT89C51、交通燈
6. 單片機智能交通燈課程設計
我有交通燈論文,裡面有C源代碼。電路圖 給個郵箱傳給你。我郵箱是[email protected].給我發個信息說明下,我發給你
7. 求單片機高手幫忙!
基於單片機交通燈智能控制系統研究
隨著經濟發展,汽車數量急劇增加,城市道路日漸擁擠,交通擁塞已成為一個國際性的問題。因此,設計可靠、安全、便捷的多功能交通燈控制系統有極大的現實必要性。通常情況下,交通信號燈控制主要有兩個缺陷:1、車道放行車輛時,時間設定相同且固定,十字路口經常出現主車道車輛多,放行時間短,車流無法在規定時間內通過,而副車道車輛少,放行時間明顯過長;2、未考慮急車強通(譬如,消防車執行緊急任務時,兩車道都應等待消防車通過)。由於交通信號燈控制系統缺乏有效的應急措施,導致十字路口交通受阻,造成不必要的經濟損失。
本系統利用單片機AT89C51,藉助CAN匯流排作為現場通信匯流排實現智能交通信號燈控制系統設計,實現了根據區域車流、紅外遙控以及PC機進行十字路口交通信號燈智能控制,並在軟、硬體方面採取一些改進措施,實現了根據十字路口車流、紅外遙控進行交通信號燈智能控制,使交通信號燈現場控制靈活、有效。從一定程度上解決了交通路口堵塞、車輛停車等待時間不合理、急車強通等問題。系統具有結構簡單、可靠性高、成本低、實時性好、安裝維護方便等優點,有廣泛的應用前景。
2 設計方案與系統結構
本智能交通信號燈控制系統硬體主要由車流信息檢測電路、鍵盤時間設置電路、紅外遙控發射/接收電路、單片機控制器、CAN匯流排控制器、CAN匯流排收發器、光電隔離晶元、單片機並行介面、看門狗電路等電路組成。本系統設置與上位PC機相連的上位節點為主節點,各路口信號燈控制裝置為底層節點,共同構成區域交通信號燈控制系統。系統原理框圖如圖1所示。
系統利用紅外遙控裝置實現各十字路口現場信號燈控制,紅外發射器發射出的編碼信號經接收器接收後送入單片機控制器,控制信號燈紅綠變換、等待時間、急車強通。另外,車流檢測裝置安放在各十字路口東西、南北道路方向實時檢測車道車流信息。並將檢測到的信息輸至單片機進行處理,通過單片機編程技術實現信號燈綠、紅切換及等待時間設定。此外,PC機通過通訊串口與節點上的單片機控制器進行通信,實現數據信息在CAN匯流排上的發送與接收。PC機負責網路上所有信號燈控制裝置的集中管理功能;同時向各信號燈控制器下傳工作模式控制信息。3 系統設計
3.1 紅外遙控發射電路
由於系統需實現十字路口不同方向信號燈變化。假設兩方向為東西、南北方向。則需實現東西、南北兩個方向信號燈的選定、時間增減、急車強通等功能。紅外遙控發射電路原理框圖如圖2所示。
紅外遙控發射器與外接陶瓷諧振器、電容器組成振盪電路,分頻產生一定脈沖寬度的載頻信號。輸出編碼信號,經達林頓管放大後,驅動紅外線發射二極體向外發射。
3.2 紅外遙控接收電路
紅外接收、解調模塊接收來自發射器的紅外信號,經內部集成電路放大、解調後,由輸出端輸出編碼脈沖信號,經三極體反相放大後,送至接收器,由接收器解調模塊進行解碼。當發射器相應鍵按下時,接收器輸出高電平信號,通過或非門接入單片機控制器的外中斷,申請中斷,由中斷服務程序檢測鍵按下狀態,從而完成相應的中斷服務。紅外接收器與單片機控制器介面電路如圖3所示。
3.3 CAN匯流排節點介面電路
各路口交通信號燈控制器與上位機的通訊都通過各自的CAN匯流排介面模塊完成。匯流排系統節點硬體電路原理框圖如圖4所示。
單片機控制器負責CAN匯流排控制器初始化,控制實現數據的接收和發送等通信任務。CAN匯流排收發器與CAN匯流排介面部分採用了一定的安全和抗干擾措施。為增強CAN匯流排節點的抗干擾能力,CAN控制器不直接與CAN收發器相連,而是通過加接高速光電隔離器晶元,實現匯流排上各節點間的電氣隔離。但是,光耦電路所採用的VCC和VDD電源必須完全隔離,否則採用光耦電路就失去了意義,可採用小功率電源隔離模塊或不大於5V隔離輸出開關電源模塊實現。
3.4 看門狗電路
由於單片機控制器自身抗干擾能力較差,尤其在一些條件比較惡劣、雜訊大的場合,常會出現單片機因受外界干擾輕者導致系統內部數據出錯,重者將嚴重影響程序的運行而死機,造成系統不能正常工作。設置看門狗是為了防止單片機死機、提高單片機系統抗干擾性的一種重要途徑。考慮系統可靠性設計,滿足苛刻環境下的正常運行,本設計中採用硬體看門狗電路。電路原理框圖如圖5所示。
通過硬體看門狗電路設計,可有效防止運行程序進入「死循環」。保證系統不受惡劣天氣及環境條件造成的干擾。
3.5 分布式檢測控制系統由於CAN匯流排具有較強的抗干擾能力,通訊中沒有地址的概念及節點數不受限制等優點,已經被廣泛應用於汽車、數控機床、儀器儀表、現場匯流排控制等領域[1]。本設計將若干智能交通信號燈控制器、上位節點介面和PC機組成CAN匯流排通信系統方便實現智能分布式區域信號燈實時監控、高速數據採集等。單片機控制器與PC機實現串列通信,設置CAN匯流排控制器工作在Intel模式,由PC機發送數據寫入單片機控制器,再通過控制信號由單片機將數據寫入CAN匯流排控制器並通過CAN匯流排收發器發送。接收數據通過中斷進行,CAN BUS數據經CAN匯流排收發器接收並寫入CAN匯流排控制器。然後通過中斷提請單片機讀取數據上傳PC機。
4 實驗分析
本系統單片機控制器選用MSC-51系列IntelAT89C51晶元,紅外遙控發射/接收器使用BA5104/BA5302設計。利用MAX692設計看門狗監控電路。匯流排通信介面中選取PHILIPS公司的SJA1000 CAN匯流排控制器及82C250匯流排收發器[2] [3]。光耦合器採用6N137晶元。系統硬體電路利用Protel DXP設計並制板。
通過實驗測試,按下紅外遙控發射器按鍵K1-K6有效地控制了東西、南北方向時間設定、急車強通,時間增、減。持續使WDI低電平時間>1.6s後,看門狗RESET端產生200ms負溢出脈沖信號使AT89C51復位,均有效地達到了系統設計要求。
為了提高系統通訊抗干擾性及可靠性,在匯流排收發器82C250的CANH和CANL引腳通過5Ω電阻與CAN匯流排相連,保護其免受過流沖擊的影響;82C250的CANH和CANL與地之間分別並聯30pF電容,濾除匯流排高頻干擾並起到防電磁輻射的作用;匯流排兩端接入120Ω終端電阻[4],匹配匯流排阻抗。此外,在CAN匯流排輸入端與地之間接防雷擊管,當兩輸入端與地之間出現瞬變干擾時,通過防雷擊管放電起到保護匯流排的作用,避免了雷電天氣對系統通訊的影響。這些部分雖然增加了節點的復雜度,但卻有效保證了數據通信的穩定性和安全性。
5 結語
交通信號燈智能控制系統為改善城市交通擁堵,提高道路的交通運輸能力發揮了積極作用。本系統設計實現了十字路口信號燈自動化、智能化、人性化實時控制。通過系統功能擴展,系統亦可應用於其他控制領域,應用前景廣闊。
8. 單片機交通燈課程設計
/*****************************************************
十字路口交通燈控制C程序
******************************************************/
#defineucharunsignedchar
#defineuintunsignedint
#include<reg52.h>
/*****定義控制位**********************/
sbit Time_Show_LED2=P2^5;//Time_Show_LED2控制位
sbit Time_Show_LED1=P2^4;//Time_Show_LED1控制位
sbitEW_LED2=P2^3;//EW_LED2控制位
sbitEW_LED1=P2^2;//EW_LED1控制位
sbitSN_LED2=P2^1;//SN_LED2控制位
sbitSN_LED1=P2^0;//SN_LED1控制位
sbit SN_Yellow=P1^6;//SN黃燈
sbit EW_Yellow=P1^2;//EW黃燈
sbit EW_Red=P1^3;//EW紅燈
sbit SN_Red=P1^7;//SN紅燈
sbit EW_ManGreen=P3^0;//EW人行道綠燈
sbit SN_ManGreen=P3^1;//SN人行道綠燈
sbit Special_LED=P2^6;//交通正常指示燈
sbit Busy_LED=P2^7;//交通繁忙指示燈
sbit Nomor_Button=P3^5;//交通正常按鍵
sbit Busy_Btton=P3^6;//交通繁忙按鍵
sbit Special_Btton=P3^7;//交通特殊按鍵
sbit Add_Button=P3^3;//時間加
sbit Reces_Button=P3^4;//時間減
bit Flag_SN_Yellow;//SN黃燈標志位
bit Flag_EW_Yellow;//EW黃燈標志位
charTime_EW;//東西方向倒計時單元
charTime_SN;//南北方向倒計時單元
ucharEW=60,SN=40,EWL=19,SNL=19;//程序初始化賦值,正常模式
ucharEW1=60,SN1=40,EWL1=19,SNL1=19;//用於存放修改值的變數
ucharcodetable[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//1~~~~9段選碼
ucharcodeS[8]={0X28,0X48,0X18,0X48,0X82,0X84,0X81,0X84};//交通信號燈控制代碼
/**********************延時子程序************************/
voidDelay(uchara)
{
uchari;
i=a;
while(i--){;}
}
/*****************顯示子函數**************************/
voidDisplay(void)
{
charh,l;
h=Time_EW/10;
l=Time_EW%10;
P0=table[l];
EW_LED2=1;
Delay(2);
EW_LED2=0;
P0=table[h];
EW_LED1=1;
Delay(2);
EW_LED1=0;
h=Time_SN/10;
l=Time_SN%10;
P0=table[l];
SN_LED2=1;
Delay(2);
SN_LED2=0;
P0=table[h];
SN_LED1=1;
Delay(2);
SN_LED1=0;
h=EW1/10;
l=EW1%10;
P0=table[l];
Time_Show_LED1=1;
Delay(2);
Time_Show_LED1=0;
P0=table[h];
Time_Show_LED2=1;
Delay(2);
Time_Show_LED2=0;
}
/**********************外部0中斷服務程序************************/
voidEXINT0(void)interrupt0using1
{
EX0=0;//關中斷
if(Add_Button==0)//時間加
{
EW1+=5;
SN1+=5;
if(EW1>=100)
{
EW1=99;
SN1=79;
}
}
if(Reces_Button==0)//時間減
{
EW1-=5;
SN1-=5;
if(EW1<=40)
{
EW1=40;
SN1=20;
}
}
if(Nomor_Button==0)//測試按鍵是否按下,按下為正常狀態
{
EW1=60;
SN1=40;
EWL1=19;
SNL1=19;
Busy_LED=0;//關繁忙信號燈
Special_LED=0;//關特殊信號燈
}
if(Busy_Btton==0)//測試按鍵是否按下,按下為繁忙狀態
{
EW1=45;
SN1=30;
EWL1=14;
SNL1=14;
Special_LED=0;//關特殊信號燈
Busy_LED=1;//開繁忙信號燈
}
if(Special_Btton==0)//測試按鍵是否按下,按下為特殊狀態
{
EW1=75;
SN1=55;
EWL1=19;
SNL1=19;
Busy_LED=0;//關繁忙信號燈
Special_LED=1;//開特殊信號燈
}
EX0=1;//開中斷
}
/**********************T0中斷服務程序*******************/
voidtimer0(void)interrupt1using1
{
staticucharcount;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
count++;
if(count==10)
{
if(Flag_SN_Yellow==1)//測試南北黃燈標志位
{SN_Yellow=~SN_Yellow;}
if(Flag_EW_Yellow==1) //測試東西黃燈標志位
{EW_Yellow=~EW_Yellow;}
}
if(count==20)
{
Time_EW--;
Time_SN--;
if(Flag_SN_Yellow==1)//測試南北黃燈標志位
{SN_Yellow=~SN_Yellow;}
if(Flag_EW_Yellow==1)//測試東西黃燈標志位
{EW_Yellow=~EW_Yellow;}
count=0;
}
}
/*********************主程序開始**********************/
voidmain(void)
{
Busy_LED=0;
Special_LED=0;
IT0=1;//INT0負跳變觸發
TMOD=0x01;//定時器工作於方式1
TH0=(65536-50000)/256;//定時器賦初值
TL0=(65536-50000)%256;
EA=1;//CPU開中斷總允許
ET0=1;//開定時中斷
EX0=1;//開外部INTO中斷
TR0=1;//啟動定時
while(1)
{/*******S0狀態**********/
EW_ManGreen=0;//EW人行道禁止
SN_ManGreen=1;//SN人行道通行
Flag_EW_Yellow=0; //EW關黃燈顯示信號
Time_EW=EW;
Time_SN=SN;
while(Time_SN>=5)
{P1=S[0];//SN通行,EW紅燈
Display();}
/*******S1狀態**********/
P1=0x00;
while(Time_SN>=0)
{Flag_SN_Yellow=1;//SN開黃燈信號位
EW_Red=1; //SN黃燈亮,等待左拐信號,EW紅燈
Display();
}
/*******S2狀態**********/
Flag_SN_Yellow=0;//SN關黃燈顯示信號
Time_SN=SNL;
while(Time_SN>=5)
{P1=S[2];//SN左拐綠燈亮,EW紅燈
Display();}
/*******S3狀態**********/
P1=0x00;
while(Time_SN>=0)
{Flag_SN_Yellow=1;//SN開黃燈信號位
EW_Red=1; //SN黃燈亮,等待停止信號,EW紅燈
Display();}
/***********賦值**********/
EW=EW1;
SN=SN1;
EWL=EWL1;
SNL=SNL1;
/*******S4狀態**********/
EW_ManGreen=~EW_ManGreen;//EW人行道通行
SN_ManGreen=~SN_ManGreen;//SN人行道禁止
Flag_SN_Yellow=0; //SN關黃燈顯示信號
Time_EW=SN;
Time_SN=EW;
while(Time_EW>=5)
{P1=S[4];//EW通行,SN紅燈
Display();}
/*******S5狀態**********/
P1=0X00;
while(Time_EW>=0)
{Flag_EW_Yellow=1;//EW開黃燈信號位
SN_Red=1;//EW黃燈亮,等待左拐信號,SN紅燈
Display();}
/*******S6狀態**********/
Flag_EW_Yellow=0; //EW關黃燈顯示信號
Time_EW=EWL;
while(Time_EW>=5)
{P1=S[6];//EW左拐綠燈亮,SN紅燈
Display();}
/*******S7狀態**********/
P1=0X00;
while(Time_EW>=0)
{Flag_EW_Yellow=1;//EN開黃燈信號位
SN_Red=1;//EW黃燈亮,等待停止信號,SN紅燈
Display();}
/***********賦值**********/
EW=EW1;
SN=SN1;
EWL=EWL1;
SNL=SNL1;
}
}
9. 基於51單片機的智能交通燈設計
如果出RMB 我幫你做程序和模擬
10. 單片機課程設計:交通燈控制!
我給你發一個看看,是protues的模擬電路圖,可以運行看效果,還有keil的匯編程序,有郵箱給你發去
我給你發了啊!!!下邊是程序:
org 0000h
sjmp main
org 0030h
main: mov p0,#11101110b
acall del1
acall del1
acall del1
acall mmm
mov p0,#11011011b
acall del1
acall del1
mov p0,#11110101b
lcall del1
acall del1
acall del1
acall mmm
sjmp main
del1:mov r0,#0ffh
loop1:mov r1,#0ffh
loop2:djnz r1,loop2
djnz r0,loop1
ret
mmm:mov p1,#0ffh
mov p2,#0ffh
mov r3,#02h
mmm2:mov p1,r3
mov r2,#09h
mmm1:mov p2,r2
acall del1
acall del1
djnz r2,mmm1
djnz r3,mmm2
mov p1,r3
mov r2,#09h
mmm3: mov p2,r2
acall del1
acall del1
djnz r2,mmm3
ret
end