![]() |
感謝各位老師的指導!![]() |
很簡單: 1、每個脈沖由0/1組成,給出兩個量:L1,H1。 2、N個脈沖,做成一個表格,給出2N個量:L1,H1、L2,H2、L3,H3、L4,H4、……LN,HN。 3、程序: 用定時器做一個計時軟件,依次取出L,H,計三種情況: L<>0,H<>0 時,L-1計時并輸出0; L = 0,H<>0 時,H-1計時并輸出1; L = 0,H = 0 時,取一下組數據; 重復。 |
把每段延時時間做成數組 再做一個定時0.1秒的定時減減函數 把數組做個循環任務函數 把第一位減的時間個數(全局參數)載入循環 減到零時載入第二個減時間個數 到最后一位處理下是跳出還是繼續循環就行了 |
定義一個結構體 typedef struct { u8 IO ; // 記錄端口狀態 u16 timer; // 記錄延時時 } SW_IO; typedef struct /////處理函數進入時間處理方案 { u16 time; /* 定義進入中斷時間 等0xFFFF 函數被關閉, 0允許進入函數 */ u8 tag; /* 標記狀態 */ u8 value; /* 傳遞參數 */ } SWT_APP ; SW_IO IO_K[50]; // 根據需要控制的時序填寫對應時間和高低電平 SWT_APP location ; 記錄數組運行位置 if(location.time ==0 ) { if( IO_K[location.tag].IO ) { 輸出高電平 } else { 輸出低電平 } location.time = IO_K[location.timer];延時時間寫入 location.tag++; } 中斷內部調用控制 if(location.time &(location.time != 0xffff) )location.time--; |
可以把這些時間做成表格查表處理。。。 |
我算了一下,按0.05s的速率,連續發送21個字節(8位)的數據即可,具體發什么數據自己算一下。 |
定時器?不同的時間隨時設定不同的定時參數? |
如果使用的是單片機可能沒有必要這樣寫一個閃燈程序,如果使用的是555或者其它器件就好理解了 |
很好奇你是怎么寫的 |