⑴ 簡易函數信號發生器c語言編寫
我沒做過正弦波和三角波,我認為正弦波做的話用帶DA功能的單片機,但是你沒說正弦波的頻率和賦值,三角波也可以用DA做,方波就很簡單了用拉高活拉低口線就可以了。你直接用單片機做,不用外圍電路嗎??
⑵ 如何寫C語言函數
1、打開C-Free,按ctrl+N創建一個新的文件。
⑶ C語言 編寫函數
1、編寫函數func1,實現求兩個數的最大公約數。
1:
int
fuc1(int
a,int
b)
{
if(a%b==0)
return
b;
return
fuc(b,a%b);
}
int
t=fuc1(a,b);//t為a,b最大公約數。
2、編寫函數func2,實現求兩個自然數之間的奇數的和。
2
int
fuc2(int
a,int
b)
{
int
sum=0;
int
i;
for(i=a;i<=b;i++)
if(i%2==1)
sum+=i;
return
sum;
}
int
t=fuc2(a,b);//t為a,b間所有奇數之和。
3、編寫函數func1,實現求一個自然數的階乘(要求用遞歸的方法)。
int
fuc1(int
k)
{
if(k==1)
return
1;
return
k*fuc(k-1);
}
int
t=fuc1(a);//t為a的階乘.
4、編寫函數func2,實現求兩個自然數之間的偶數的和。
int
fuc2(int
a,int
b)
{
int
sum=0;
int
i;
for(i=a;i<=b;i++)
if(i%2==0)
sum+=i;
return
sum;
}
int
t=fuc2(a,b);//t為a,b間所有偶數之和。
⑷ 如何用C語言編程使單片機產生方波信號
普通51的話需要模擬PWM,如果是加強版51有內置PWM模塊,
PIC和AVR以及430還有STM也有集成PWM的型號!
如果是單純輸出方波的話就簡單了。
程序如下:
//功能,按下P1_0的開關降低頻率,按P1_1為升高頻率
#include<AT89X52.H> //引用AT89X52的庫文件
#defineucharunsignedchar //替換簡稱
#defineuintunsignedint //替換簡稱
ucharsm; //定義臨時變數
voiddelay_ms(uintms) //延時子函數,一個循環12uS
{
while(--ms);
}
voidT0_IRQ(void)interruptTF0_VECTOR //定時器0中斷函數
{
TH0=sm; //將變數賦予定時器0的高位
P2_0=!P2_0; //翻轉IO
}
//寄存器初始化子函數
voidmcu_init()
{
ET0=1; //開定時器0中斷
EA=1; //開總中斷
TMOD=0x01; //設置為16位定時器0
TH0=0xFF; //填充定時器高位
TR0=1; //開定時器0
sm=0xFF; //變數初始化
}
voidmain() //主函數
{
mcu_init(); //調用初始化函數
while(1) //主循環
{
if((!P1_0)||(!P1_1)) //檢測是否有按鍵按下
{
delay_ms(8333); //延時去抖
if(!P1_0) //如果是P1_0按鍵按下
{
while(!P1_0); //等待按鍵放手
if(sm) //檢測變數不為0
{
--sm; //自減1
P2_1=1; //取消邊界LED
}
elseP2_1=0; //到達邊界點亮LED
}
elseif(!P1_1) //否則如果P1_1按鍵按下
{
while(!P1_1); //等待按鍵放手
if(sm<0xFF) //檢測變數小於0xFF
{
++sm; //自加1
P2_1=1;
}
elseP2_1=0;
}
}
}
}
⑸ C語言中,用於設置中斷、中斷信號的函數有哪些怎麼設置一個發送中斷信號(自己定義的)的函數
對於C51單片機,其內部總共有五級中斷源
分別為外部中斷0、定時器0、外部中斷1、定時器1及串列中斷。
C51單片機的中斷使用時,主要是通過中斷服務號來決定的。
如你定義一個中斷服務函數:
void KEY(void) intterrupt 0
{
}
當外部中斷0申請中斷時
會自動根據interrupt後面的0,找到上面定義的這個中斷服務函數。
對於其他四個中斷源,其對應的中斷號分別為1、2 、3、4
⑹ 用c語言編寫一個自定義的函數時的基本步驟
1 根據功能,想一個函數名,並設計好返回值類型以及參數列表。參數列表包括參數個數,每個參數類型,以及該參數的作用。
2 根據函數要實現的功能,實現函數的主體代碼。
3 按照你設計的想法,傳入不同參數類型,驗證函數功能並調試。
⑺ C語言中信號問題
信號是程序執行過程中出現的異常情況。它可能是由程序中的錯誤造成的,例如引用內存中的一個非法地址;或者是由程序數據中的錯誤造成的,例如浮點數被0除;或者是由外部事件引發的,例如用戶按了Ctrl+Break鍵。
你可以利用標准庫函數signal()指定要對這些異常情況採取的處理措施(實施處理措施的函數被稱為「信號處理函數」)。signal()的原型為:
#include <signal.h>
void(*signal(int hum,void(*func)(int)))(int);
如果定義一個typedef,理解起來就容易一些了。下面給出的sigHandler_t類型是指向一個程序的指針,該函數有一個int類型的參數,並且返回一個void類型:
typedef void(*sigHandler_t)(int);
sigHandler_t signal(int num , sigHandler_t func);
signal()有兩個參數,分別為int類型和sigHandler_t類型,其返回值為sigHandler_t類型。以func參數形式傳遞給signal()的那個函數將成為第num號異常情況的新的信號處理函數。signal()的返回值是信號hum原來的信號處理函數。在設置了一個暫時的信號處理函數之後,你可以利用該值恢復程序先前的行為。num的可能值依賴於系統,並且在signal.h中列出。func的可能值可以是你的程序中的任意函數,或者是SIG_DFL和SLG_IGN這兩個特別定義的值之一。SIG_DFL是指系統的預設處理措施,通常是暫停執行程序;SIG_IGN表示信號將被忽略。
⑻ 怎樣用C語言編寫一個方波函數
附上代碼,講解在後面:
public class Program
{
static void Main(string[] args)
{
List<Point> range = new List<Point>(5 * 5);
for (int i = 0; i < 5; i++)
{
for (int j = 0; j < 5; j++)
{
range.Add(new Point { X = j, Y = i });
}
}
//移動方向的順序
MoveDirection[] md = new[]
⑼ C語言中的signal函數的作用是什麼啊
signal()是一種系統調用,用於通知運行時系統,當某種特定的「軟體中斷」發生時調用特定的程序。它的真正的名字應該是「Call_that_routine_when_this_interrupt_Comes_in(當該中斷發生時調用那個程序)」,調用signal()函數,並通過參數傳遞告訴它終端類型以及用於處理中斷的程序。
ANSIC 標准中,signal()函數的聲明如下:
void (*signal (int sig ,void (*func)(int))) (int) ;
signal是一個函數,他返回一個函數指針,後者所指向的函數接受一個int參數並返回void 。
⑽ C語言編寫函數
在C語言中,一個標準的函數定義語句塊必須包含函數返回值的類型標識符、函數名、形參類型及數量、函數體、返回值表達式。如果函數返回值類型為 void (即無返回值),則在兩個大括弧之間不能寫帶有返回值表達式的 return 語句,否則編譯器就會報錯。你寫的 test 函數返回值類型為 void,而你在函數定義語句塊內寫下了 return 語句,編譯器自然會報錯了。
你可以將這個函數修改為以下形式:
int test(int n)
{
int m = n / 2;
return m;
}