源碼:- void main0()
- {
- OS0.OS_init();
- 控制器.OS_init();
- 延時器.OS_init();
- 屏幕2004.OS_init();
- 功能.OS_init();
- 設置加.OS_init();
- 信息顯示器.OS_init();
- 設置減.OS_init();
- 數據列表.OS_init();
- OS0.CreateDriver( (#addr 控制器.OS_run), 控制器.OS_time );
- OS0.CreateDriver( (#addr 延時器.OS_run), 延時器.OS_time );
- OS0.CreateDriver( (#addr 功能.OS_run), 功能.OS_time );
- OS0.CreateDriver( (#addr 設置加.OS_run), 設置加.OS_time );
- OS0.CreateDriver( (#addr 設置減.OS_run), 設置減.OS_time );
- OS0.CreateTask( #addr dispatch );
- OS_VarInit();
- OS0.Start();
- dispatch:
- forever {
- if( 控制器.OS_EventFlag.0(bit) == 1 ) {
- 控制器.OS_EventFlag.0(bit) = 0;
- if( 控制器_系統啟動時_enable && x_控制器_0_ResCount == 0 ) {
- OS0.AppTCB[OS0.CurrentTaskIndex].e_res_count -> x_控制器_0_ResCount;
- OS0.CreateTask( #addr 控制器_系統啟動時 ); OS0.Schedule();
- }
- }
- if( 控制器.OS_EventFlag.1(bit) == 1 ) {
- 控制器.OS_EventFlag.1(bit) = 0;
- if( 控制器_反復執行_enable && x_控制器_1_ResCount == 0 ) {
- OS0.AppTCB[OS0.CurrentTaskIndex].e_res_count -> x_控制器_1_ResCount;
- OS0.CreateTask( #addr 控制器_反復執行 ); OS0.Schedule();
- }
- }
- if( 功能.OS_EventFlag.0(bit) == 1 ) {
- 功能.OS_EventFlag.0(bit) = 0;
- if( 功能_按鍵按下時_enable && x_功能_0_ResCount == 0 ) {
- OS0.AppTCB[OS0.CurrentTaskIndex].e_res_count -> x_功能_0_ResCount;
- OS0.CreateTask( #addr 功能_按鍵按下時 ); OS0.Schedule();
- }
- }
- if( 設置加.OS_EventFlag.0(bit) == 1 ) {
- 設置加.OS_EventFlag.0(bit) = 0;
- if( 設置加_按鍵按下時_enable && x_設置加_0_ResCount == 0 ) {
- OS0.AppTCB[OS0.CurrentTaskIndex].e_res_count -> x_設置加_0_ResCount;
- OS0.CreateTask( #addr 設置加_按鍵按下時 ); OS0.Schedule();
- }
- }
- if( 設置減.OS_EventFlag.0(bit) == 1 ) {
- 設置減.OS_EventFlag.0(bit) = 0;
- if( 設置減_按鍵按下時_enable && x_設置減_0_ResCount == 0 ) {
- OS0.AppTCB[OS0.CurrentTaskIndex].e_res_count -> x_設置減_0_ResCount;
- OS0.CreateTask( #addr 設置減_按鍵按下時 ); OS0.Schedule();
- }
- }
- 控制器.OS_thread();
- 屏幕2004.OS_thread();
- OS0.Schedule();
- 控制器.OS_ClearWatchDog();
- }
- }
- void 控制器_系統啟動時()
- {
- 控制器_反復執行_enable = false;
- 屏幕2004.清空();
- (月個位)=(1);
- (日個位)=(1);
- 信息顯示器.在第_行第_列顯示信息_((1),(1),("20"));
- 屏幕2004.第_行第_列顯示字符_((1),(3),(年十位));
- 屏幕2004.第_行第_列顯示字符_((1),(4),(年個位));
- 屏幕2004.第_行第_列顯示字符_((1),(6),(月十位));
- 屏幕2004.第_行第_列顯示字符_((1),(7),(月個位));
- 屏幕2004.第_行第_列顯示字符_((1),(9),(日十位));
- 屏幕2004.第_行第_列顯示字符_((1),(10),(日個位));
- 屏幕2004.第_行第_列顯示字符_((2),(8),(秒個位));
- 屏幕2004.第_行第_列顯示字符_((2),(7),(秒十位));
- 屏幕2004.第_行第_列顯示字符_((2),(6),(':'));
- 屏幕2004.第_行第_列顯示字符_((2),(5),(分鐘個位));
- 屏幕2004.第_行第_列顯示字符_((2),(4),(分鐘十位));
- 屏幕2004.第_行第_列顯示字符_((2),(3),(':'));
- 屏幕2004.第_行第_列顯示字符_((2),(2),(小時個位));
- 屏幕2004.第_行第_列顯示字符_((2),(1),(小時十位));
- (w)=(0);
- if( (w)==(0) ) {
- 信息顯示器.在第_行第_列顯示信息_((2),(10),(" SET"));
- }
- 數據列表.添加數據_((1));
- 數據列表.添加數據_((0));
- 數據列表.添加數據_((3));
- 數據列表.添加數據_((0));
- 數據列表.添加數據_((5));
- 數據列表.添加數據_((0));
- 數據列表.添加數據_((7));
- 數據列表.添加數據_((8));
- 數據列表.添加數據_((0));
- 數據列表.添加數據_((10));
- 數據列表.添加數據_((0));
- 數據列表.添加數據_((12));
- }
- void 加_次( int32 A )
- {
- if( (w)==(1) ) {
- (年)+(1);
- if( (年)>(99) ) {
- (年)=(0);
- }
- (年個位)=((年)%(10));
- (年十位)=((年)/(10));
- 屏幕2004.第_行第_列顯示字符_((1),(4),(年個位));
- 屏幕2004.第_行第_列顯示字符_((1),(3),(年十位));
- }
- if( (w)==(2) ) {
- (月)+(1);
- if( (月)>(12) ) {
- (月)=(1);
- }
- (月個位)=((月)%(10));
- (月十位)=((月)/(10));
- 屏幕2004.第_行第_列顯示字符_((1),(7),(月個位));
- 屏幕2004.第_行第_列顯示字符_((1),(6),(月十位));
- }
- if( (w)==(3) ) {
- (日)+(1);
- if( !((月)==(2)) ) {
- if( (月)==(數據列表.讀取第_個數據((月))) ) {
- if( (日)>(31) ) {
- (日)=(1);
- }
- }
- else {
- if( (日)>(30) ) {
- (日)=(1);
- }
- }
- }
- else {
- if( (日)>(28) ) {
- (日)=(1);
- }
- }
- (日個位)=((日)%(10));
- (日十位)=((日)/(10));
- 屏幕2004.第_行第_列顯示字符_((1),(10),(日個位));
- 屏幕2004.第_行第_列顯示字符_((1),(9),(日十位));
- }
- if( (w)==(4) ) {
- (小時)+(1);
- if( (小時)>(23) ) {
- (小時)=(0);
- }
- (小時個位)=((小時)%(10));
- (小時十位)=((小時)/(10));
- 屏幕2004.第_行第_列顯示字符_((2),(2),(小時個位));
- 屏幕2004.第_行第_列顯示字符_((2),(1),(小時十位));
- }
- if( (w)==(5) ) {
- (分鐘)+(1);
- if( (分鐘)>(59) ) {
- (分鐘)=(0);
- }
- (分鐘個位)=((分鐘)%(10));
- (分鐘十位)=((分鐘)/(10));
- 屏幕2004.第_行第_列顯示字符_((2),(5),(分鐘個位));
- 屏幕2004.第_行第_列顯示字符_((2),(4),(分鐘十位));
- }
- }
- void 功能_按鍵按下時()
- {
- (w)+(1);
- if( (w)==(1) ) {
- 信息顯示器.在第_行第_列顯示信息_((2),(10),(" Year"));
- }
- if( (w)==(2) ) {
- 信息顯示器.在第_行第_列顯示信息_((2),(10),(" Month"));
- }
- if( (w)==(3) ) {
- 信息顯示器.在第_行第_列顯示信息_((2),(10),(" Day "));
- }
- if( (w)==(4) ) {
- 信息顯示器.在第_行第_列顯示信息_((2),(10),(" Hour "));
- }
- if( (w)==(5) ) {
- 信息顯示器.在第_行第_列顯示信息_((2),(10),("Minute"));
- }
- if( (w)==(6) ) {
- (w)=(0);
- 設置加_按鍵按下時_enable = false;
- 設置減_按鍵按下時_enable = false;
- 控制器_反復執行_enable = true;
- 信息顯示器.清空第_行((3));
- 信息顯示器.在第_行第_列顯示信息_((2),(10),(" Time "));
- (秒)=(0);
- }
- else {
- 設置加_按鍵按下時_enable = true;
- 設置減_按鍵按下時_enable = true;
- 控制器_反復執行_enable = false;
- }
- 延時器.延時_毫秒((200));
- }
- void 設置加_按鍵按下時()
- {
- forever {
- OS0.Schedule();
- 加_次((1));
- 延時器.延時_毫秒((200));
- if( 設置加.按鍵松開 ) {
- break;
- }
- }
- }
- void 減_次( int32 B )
- {
- if( (w)==(1) ) {
- (年)-(1);
- if( (年)<(1) ) {
- (年)=(99);
- }
- (年個位)=((年)%(10));
- (年十位)=((年)/(10));
- 屏幕2004.第_行第_列顯示字符_((1),(4),(年個位));
- 屏幕2004.第_行第_列顯示字符_((1),(3),(年十位));
- }
- if( (w)==(2) ) {
- (月)-(1);
- if( (月)<(1) ) {
- (月)=(12);
- }
- (月個位)=((月)%(10));
- (月十位)=((月)/(10));
- 屏幕2004.第_行第_列顯示字符_((1),(7),(月個位));
- 屏幕2004.第_行第_列顯示字符_((1),(6),(月十位));
- }
- if( (w)==(3) ) {
- (日)-(1);
- if( !((月)==(2)) ) {
- if( (月)==(數據列表.讀取第_個數據((月))) ) {
- if( (日)<(1) ) {
- (日)=(31);
- }
- }
- else {
- if( (日)<(1) ) {
- (日)=(30);
- }
- }
- }
- else {
- if( (日)<(1) ) {
- (日)=(28);
- }
- }
- (日個位)=((日)%(10));
- (日十位)=((日)/(10));
- 屏幕2004.第_行第_列顯示字符_((1),(10),(日個位));
- 屏幕2004.第_行第_列顯示字符_((1),(9),(日十位));
- }
- if( (w)==(4) ) {
- (小時)-(1);
- if( (小時)<(0) ) {
- (小時)=(23);
- }
- (小時個位)=((小時)%(10));
- (小時十位)=((小時)/(10));
- 屏幕2004.第_行第_列顯示字符_((2),(2),(小時個位));
- 屏幕2004.第_行第_列顯示字符_((2),(1),(小時十位));
- }
- if( (w)==(5) ) {
- (分鐘)-(1);
- if( (分鐘)<(0) ) {
- (分鐘)=(59);
- }
- (分鐘個位)=((分鐘)%(10));
- (分鐘十位)=((分鐘)/(10));
- 屏幕2004.第_行第_列顯示字符_((2),(5),(分鐘個位));
- 屏幕2004.第_行第_列顯示字符_((2),(4),(分鐘十位));
- }
- }
- void 設置減_按鍵按下時()
- {
- forever {
- OS0.Schedule();
- 減_次((1));
- 延時器.延時_毫秒((200));
- if( 設置減.按鍵松開 ) {
- break;
- }
- }
- }
- void 控制器_反復執行()
- {
- (秒)+(1);
- if( (月)==(0) ) {
- (月)=(1);
- }
- if( (日)==(0) ) {
- (日)=(1);
- }
- if( (秒)>(59) ) {
- (秒)=(0);
- (分鐘)+(1);
- }
- if( (分鐘)>(59) ) {
- (分鐘)=(0);
- (小時)+(1);
- }
- if( (小時)>(23) ) {
- (小時)=(0);
- (日)+(1);
- }
- if( !((月)==(2)) ) {
- if( (月)==(數據列表.讀取第_個數據((月))) ) {
- if( (日)>(31) ) {
- (日)=(1);
- (月)+(1);
- }
- }
- else {
- if( (日)>(30) ) {
- (日)=(1);
- (月)+(1);
- }
- }
- }
- else {
- if( (日)>(28) ) {
- (日)=(1);
- (月)+(1);
- }
- }
- if( (月)>(12) ) {
- (月)=(1);
- (年)+(1);
- }
- if( (小時)<(12) ) {
- 信息顯示器.在第_行第_列顯示信息_((1),(12),("AM"));
- }
- else {
- 信息顯示器.在第_行第_列顯示信息_((1),(12),("PM"));
- }
- (秒個位)=((秒)%(10));
- (秒十位)=((秒)/(10));
- (分鐘個位)=((分鐘)%(10));
- (分鐘十位)=((分鐘)/(10));
- (小時個位)=((小時)%(10));
- (小時十位)=((小時)/(10));
- (日個位)=((日)%(10));
- (日十位)=((日)/(10));
- (月個位)=((月)%(10));
- (月十位)=((月)/(10));
- (年個位)=((年)%(10));
- (年十位)=((年)/(10));
- 信息顯示器.在第_行第_列顯示信息_((1),(1),("20"));
- 屏幕2004.第_行第_列顯示字符_((1),(3),(年十位));
- 屏幕2004.第_行第_列顯示字符_((1),(4),(年個位));
- 屏幕2004.第_行第_列顯示字符_((1),(6),(月十位));
- 屏幕2004.第_行第_列顯示字符_((1),(7),(月個位));
- 屏幕2004.第_行第_列顯示字符_((1),(9),(日十位));
- 屏幕2004.第_行第_列顯示字符_((1),(10),(日個位));
- 屏幕2004.第_行第_列顯示字符_((2),(8),(秒個位));
- 屏幕2004.第_行第_列顯示字符_((2),(7),(秒十位));
- 屏幕2004.第_行第_列顯示字符_((2),(5),(分鐘個位));
- 屏幕2004.第_行第_列顯示字符_((2),(4),(分鐘十位));
- 屏幕2004.第_行第_列顯示字符_((2),(2),(小時個位));
- 屏幕2004.第_行第_列顯示字符_((2),(1),(小時十位));
- 屏幕2004.第_行第_列顯示字符_((2),(6),(':'));
- 屏幕2004.第_行第_列顯示字符_((2),(3),(':'));
- 延時器.延時_毫秒((500));
- 屏幕2004.第_行第_列顯示字符_((2),(6),('無'));
- 屏幕2004.第_行第_列顯示字符_((2),(3),('無'));
- 延時器.延時_毫秒((500));
- }
- int32 秒個位;
- int32 秒十位;
- int32 分鐘個位;
- int32 分鐘十位;
- int32 小時十位;
- int32 小時個位;
- int32 w;
- int32 秒;
- int32 分鐘;
- int32 小時;
- int32 年;
- int32 年個位;
- int32 年十位;
- int32 月;
- int32 月個位;
- int32 月十位;
- int32 日;
- int32 日個位;
- int32 日十位;
- int32 D1;
- int32 D2;
- int32 D3;
- bool B1;
- bool B2;
- bool B3;
- uint8 x_控制器_0_ResCount;
- bool 控制器_系統啟動時_enable;
- uint8 x_控制器_1_ResCount;
- bool 控制器_反復執行_enable;
- uint8 x_功能_0_ResCount;
- bool 功能_按鍵按下時_enable;
- uint8 x_設置加_0_ResCount;
- bool 設置加_按鍵按下時_enable;
- uint8 x_設置減_0_ResCount;
- bool 設置減_按鍵按下時_enable;
- void OS_VarInit()
- {
- 控制器_系統啟動時_enable = true;
- 控制器_反復執行_enable = true;
- 功能_按鍵按下時_enable = true;
- 設置加_按鍵按下時_enable = true;
- 設置減_按鍵按下時_enable = true;
- }
復制代碼
|