đây là đoạn code tạo trễ tổng quát
delay :
push 5
push 6
push 7
mov r5,#m
mov r6,#n
mov r7,#p
djnz r7,$
djnz r6,$-4
djnz r5,$-8
pop 7
pop 6
pop 5
ret
với m,n,p là số tự nhiên từ 1 đến 255
khi đó chu kì máy sau khi chạy hết vòng lặp là ((2p+1)xn+2n+1)xm+2m+1 (MC)
làm thế nào để tìm m,n,p cho chính xác nhất
mình đã tạo 1 code c để tìm m,n,p với độ chính xác khá cao như sau
//tinh chu ki delay
#include<conio.h>
#include<stdio.h>
void main()
{
clrscr();
float m, n,p;
float m1,m2,t;
float tem=1,tem2,n1,p1;
float i,j;
printf ("nhap so chu ki may\n");
scanf("%f",&t);
printf("\nnhap n p \n");
scanf ("%f",&n);
scanf("%f",&p);
for ( i=1;i<=n;i++)
{
for ( j=1;j<=p;j++)
{
m1=(t-1)/(3*i+3+2*j*i);
m2=long ((t-1)/(3*i+3+2*j*i)); //lay phan nguyen
tem2=m1-m2; // sai lech
if (m1<=255&&tem2<=tem) { m=m1; n1=i ; p1=j;tem=tem2; }
}
}
printf(" m=%f\n n=%f\n p=%f \n",m,n1,p1);
getch();
}
vidu: nếu muôn delay 1s thì nhập : so chu ki may=1000000
nhap n, p lân lượt 255
255
ket qua rat tròn m=63 n=230 p=33
vì m tròn nên sai số là không có
code delay nay chi sai 14 chu kì máy bởi 3 lệnh push (3x2=6 MC) và lệnh pop (2x3 MC) va 1 lênh ret ( 2 MC)
nên sai số là 14us/1s =0.0014%
delay :
push 5
push 6
push 7
mov r5,#m
mov r6,#n
mov r7,#p
djnz r7,$
djnz r6,$-4
djnz r5,$-8
pop 7
pop 6
pop 5
ret
với m,n,p là số tự nhiên từ 1 đến 255
khi đó chu kì máy sau khi chạy hết vòng lặp là ((2p+1)xn+2n+1)xm+2m+1 (MC)
làm thế nào để tìm m,n,p cho chính xác nhất
mình đã tạo 1 code c để tìm m,n,p với độ chính xác khá cao như sau
//tinh chu ki delay
#include<conio.h>
#include<stdio.h>
void main()
{
clrscr();
float m, n,p;
float m1,m2,t;
float tem=1,tem2,n1,p1;
float i,j;
printf ("nhap so chu ki may\n");
scanf("%f",&t);
printf("\nnhap n p \n");
scanf ("%f",&n);
scanf("%f",&p);
for ( i=1;i<=n;i++)
{
for ( j=1;j<=p;j++)
{
m1=(t-1)/(3*i+3+2*j*i);
m2=long ((t-1)/(3*i+3+2*j*i)); //lay phan nguyen
tem2=m1-m2; // sai lech
if (m1<=255&&tem2<=tem) { m=m1; n1=i ; p1=j;tem=tem2; }
}
}
printf(" m=%f\n n=%f\n p=%f \n",m,n1,p1);
getch();
}
vidu: nếu muôn delay 1s thì nhập : so chu ki may=1000000
nhap n, p lân lượt 255
255
ket qua rat tròn m=63 n=230 p=33
vì m tròn nên sai số là không có

code delay nay chi sai 14 chu kì máy bởi 3 lệnh push (3x2=6 MC) và lệnh pop (2x3 MC) va 1 lênh ret ( 2 MC)
nên sai số là 14us/1s =0.0014%
Comment