Xin chào!
Mình đang làm đồ án về pic18f4550...mình mới học píc nên không biết lập trình thế nào...nhiệm vụ ban đầu là phải dùng pic8f4550 lập trình tạo ra hàm sin, cos có chu kỳ 10ms, biên độ 5v và tạo xung chuẩn có chu kỳ là 10ms...code này mình không hiểu lắm, ai giải thích hộ cái:
#include <18F4550.h>
#include <stdio.h>
#include <math.h>
#fuses HS, NOWDT, NOLVP, NOBROWNOUT, NOPROTECT, PUT
#use delay(clock=20000000)
void set_up();
unsigned int16 dem;
unsigned int const N = 400; //167
unsigned int16 bien;
unsigned int8 sin_bc[N],cos_bc[N];
#int_TIMER1
void ngat()
{
set_timer1(65236);
output_d(sin_bc[dem]);
output_b(cos_bc[dem]);
dem=dem+1;
if (dem==N)
dem = 0;
}
void main()
{
set_timer1(65236);
set_up();
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
enable_interrupts(INT_timer1);
enable_interrupts(GLOBAL);
while(1)
{
if(dem ==0)
{
output_bit(pin_a0,1);
}
if(dem ==2)
{
output_bit(pin_a0,0);
}
if(dem ==N)
dem = 0;
}
}
// tinh ham sin
void set_up()
{
int i; //,j,k;
//unsigned int temp1,temp2;
for (i=0;i<N;i++)
{
sin_bc[i] = ((127*sin(2*3.14*i/N))+128);
cos_bc[i] = ((127*cos(2*3.14*i/N))+128);
}
dem = 0;
}
Mình đang làm đồ án về pic18f4550...mình mới học píc nên không biết lập trình thế nào...nhiệm vụ ban đầu là phải dùng pic8f4550 lập trình tạo ra hàm sin, cos có chu kỳ 10ms, biên độ 5v và tạo xung chuẩn có chu kỳ là 10ms...code này mình không hiểu lắm, ai giải thích hộ cái:
#include <18F4550.h>
#include <stdio.h>
#include <math.h>
#fuses HS, NOWDT, NOLVP, NOBROWNOUT, NOPROTECT, PUT
#use delay(clock=20000000)
void set_up();
unsigned int16 dem;
unsigned int const N = 400; //167
unsigned int16 bien;
unsigned int8 sin_bc[N],cos_bc[N];
#int_TIMER1
void ngat()
{
set_timer1(65236);
output_d(sin_bc[dem]);
output_b(cos_bc[dem]);
dem=dem+1;
if (dem==N)
dem = 0;
}
void main()
{
set_timer1(65236);
set_up();
setup_timer_1(T1_INTERNAL|T1_DIV_BY_1);
enable_interrupts(INT_timer1);
enable_interrupts(GLOBAL);
while(1)
{
if(dem ==0)
{
output_bit(pin_a0,1);
}
if(dem ==2)
{
output_bit(pin_a0,0);
}
if(dem ==N)
dem = 0;
}
}
// tinh ham sin
void set_up()
{
int i; //,j,k;
//unsigned int temp1,temp2;
for (i=0;i<N;i++)
{
sin_bc[i] = ((127*sin(2*3.14*i/N))+128);
cos_bc[i] = ((127*cos(2*3.14*i/N))+128);
}
dem = 0;
}
Comment