Chả hiểu tại sao cứ phải là asm nhỉ
)))))))))))))))))))))))))))))))))))))))
)))))))))))))))))))))))))))))))))))))))
/*Thach anh su dung f=24Mhz*/
#include "regx52.h"
typedef unsigned char uchar;
typedef unsigned int uint;
sbit c1=P0^0;
sbit c2=P0^1;
sbit c3=P0^2;
sbit c4=P0^3;
sbit c5=P0^4;
sbit c6=P0^5;
sbit c7=P0^6;
sbit c8=P0^7;
sbit c9=P2^7;
sbit c10=P2^6;
sbit c11=P2^5;
sbit c12=P2^4;
sbit c13=P2^3;
sbit c14=P2^2;
sbit c15=P2^1;
sbit c16=P2^0;
sbit c17=P3^7;
sbit c18=P3^6;
sbit c19=P3^5;
sbit c20=P3^4;
sbit c21=P3^3;
sbit c22=P3^2;
sbit c23=P3^1;
sbit c24=P3^0;
sbit c25=P1^7;
sbit c26=P1^6;
sbit c27=P1^5;
sbit c28=P1^4;
sbit c29=P1^3;
sbit c30=P1^2;
sbit c31=P1^1;
sbit c32=P1^0;
uchar num_pwm;
uchar pwm_c[32];
uint delay_in_t1;
void isr_timer1() interrupt 3 using 2{
TH1=0xFE; /* -24000000/12/60/100 ~= -333 ->0xfeb3 (100 nghia la 100 muc sang)*/
TL1=0xB3; /* chu ky ngat timer1 T=(333/2)us --> T*6 = 999 us ~= 1ms*/
c1=(pwm_c[0]>num_pwm)?1:0;
c2=(pwm_c[1]>num_pwm)?1:0;
c3=(pwm_c[2]>num_pwm)?1:0;
c4=(pwm_c[3]>num_pwm)?1:0;
c5=(pwm_c[4]>num_pwm)?1:0;
c6=(pwm_c[5]>num_pwm)?1:0;
c7=(pwm_c[6]>num_pwm)?1:0;
c8=(pwm_c[7]>num_pwm)?1:0;
c9=(pwm_c[8]>num_pwm)?1:0;
c10=(pwm_c[9]>num_pwm)?1:0;
c11=(pwm_c[10]>num_pwm)?1:0;
c12=(pwm_c[11]>num_pwm)?1:0;
c13=(pwm_c[12]>num_pwm)?1:0;
c14=(pwm_c[13]>num_pwm)?1:0;
c15=(pwm_c[14]>num_pwm)?1:0;
c16=(pwm_c[15]>num_pwm)?1:0;
c17=(pwm_c[16]>num_pwm)?1:0;
c18=(pwm_c[17]>num_pwm)?1:0;
c19=(pwm_c[18]>num_pwm)?1:0;
c20=(pwm_c[19]>num_pwm)?1:0;
c21=(pwm_c[20]>num_pwm)?1:0;
c22=(pwm_c[21]>num_pwm)?1:0;
c23=(pwm_c[22]>num_pwm)?1:0;
c24=(pwm_c[23]>num_pwm)?1:0;
c25=(pwm_c[24]>num_pwm)?1:0;
c26=(pwm_c[25]>num_pwm)?1:0;
c27=(pwm_c[26]>num_pwm)?1:0;
c28=(pwm_c[27]>num_pwm)?1:0;
c29=(pwm_c[28]>num_pwm)?1:0;
c30=(pwm_c[29]>num_pwm)?1:0;
c31=(pwm_c[30]>num_pwm)?1:0;
c32=(pwm_c[31]>num_pwm)?1:0;
if(++num_pwm==100){
num_pwm=0;
}
++delay_in_t1;
}
void delay_ms(uint time){
delay_in_t1 = 0;
while(delay_in_t1 <= time*6);
}
void main(){
TMOD=0x10; /*timer 1 16bit*/
TR1=1;
TH1=0xFE;
TL1=0xB3;
IE=0x88; /*Ket thuc khoi dong timer1*/
P0 = 0;
P1 = 0;
P2 = 0;
P3 = 0;
delay_ms(3000);
while(1){
}
}
43: void isr_timer1() interrupt 3 using 2{
C:0x001E C0E0 PUSH ACC(0xE0)
C:0x0020 C0D0 PUSH PSW(0xD0)
44: TH1=0xFE; /* -24000000/12/60/100 ~= -333 ->0xfeb3 (100 nghia la 100 muc sang)*/
C:0x0022 758DFE MOV TH1(0x8D),#0xFE
45: TL1=0xB3; /* chu ky ngat timer1 T=(333/2)us --> T*6 = 999 us ~= 1ms*/
46:
C:0x0025 758BB3 MOV TL1(0x8B),#0xB3
47: c1=(pwm_c[0]>num_pwm)?1:0;
C:0x0028 E509 MOV A,pwm_c(0x09)
C:0x002A D3 SETB C
C:0x002B 9508 SUBB A,num_pwm(0x08)
C:0x002D 4003 JC C:0032
C:0x002F D3 SETB C
C:0x0030 8001 SJMP C:0033
C:0x0032 C3 CLR C
C:0x0033 9280 MOV c1(0x80.0),C
48: c2=(pwm_c[1]>num_pwm)?1:0;
C:0x0035 E50A MOV A,0x0A
C:0x0037 D3 SETB C
C:0x0038 9508 SUBB A,num_pwm(0x08)
C:0x003A 4003 JC C:003F
C:0x003C D3 SETB C
C:0x003D 8001 SJMP C:0040
C:0x003F C3 CLR C
C:0x0040 9281 MOV c2(0x80.1),C
49: c3=(pwm_c[2]>num_pwm)?1:0;
C:0x0042 E50B MOV A,0x0B
C:0x0044 D3 SETB C
C:0x0045 9508 SUBB A,num_pwm(0x08)
C:0x0047 4003 JC C:004C
C:0x0049 D3 SETB C
C:0x004A 8001 SJMP C:004D
C:0x004C C3 CLR C
C:0x004D 9282 MOV c3(0x80.2),C
50: c4=(pwm_c[3]>num_pwm)?1:0;
C:0x004F E50C MOV A,0x0C
C:0x0051 D3 SETB C
C:0x0052 9508 SUBB A,num_pwm(0x08)
C:0x0054 4003 JC C:0059
C:0x0056 D3 SETB C
C:0x0057 8001 SJMP C:005A
C:0x0059 C3 CLR C
C:0x005A 9283 MOV c4(0x80.3),C
51: c5=(pwm_c[4]>num_pwm)?1:0;
C:0x005C E50D MOV A,0x0D
C:0x005E D3 SETB C
C:0x005F 9508 SUBB A,num_pwm(0x08)
C:0x0061 4003 JC C:0066
C:0x0063 D3 SETB C
C:0x0064 8001 SJMP C:0067
C:0x0066 C3 CLR C
C:0x0067 9284 MOV c5(0x80.4),C
52: c6=(pwm_c[5]>num_pwm)?1:0;
C:0x0069 E50E MOV A,0x0E
C:0x006B D3 SETB C
C:0x006C 9508 SUBB A,num_pwm(0x08)
C:0x006E 4003 JC C:0073
C:0x0070 D3 SETB C
C:0x0071 8001 SJMP C:0074
C:0x0073 C3 CLR C
C:0x0074 9285 MOV c6(0x80.5),C
53: c7=(pwm_c[6]>num_pwm)?1:0;
C:0x0076 E50F MOV A,0x0F
C:0x0078 D3 SETB C
C:0x0079 9508 SUBB A,num_pwm(0x08)
C:0x007B 4003 JC C:0080
C:0x007D D3 SETB C
C:0x007E 8001 SJMP C:0081
C:0x0080 C3 CLR C
C:0x0081 9286 MOV c7(0x80.6),C
54: c8=(pwm_c[7]>num_pwm)?1:0;
C:0x0083 E510 MOV A,0x10
C:0x0085 D3 SETB C
C:0x0086 9508 SUBB A,num_pwm(0x08)
C:0x0088 4003 JC C:008D
C:0x008A D3 SETB C
C:0x008B 8001 SJMP C:008E
C:0x008D C3 CLR C
C:0x008E 9287 MOV c8(0x80.7),C
55: c9=(pwm_c[8]>num_pwm)?1:0;
C:0x0090 E511 MOV A,0x11
C:0x0092 D3 SETB C
C:0x0093 9508 SUBB A,num_pwm(0x08)
C:0x0095 4003 JC C:009A
C:0x0097 D3 SETB C
C:0x0098 8001 SJMP C:009B
C:0x009A C3 CLR C
C:0x009B 92A7 MOV c9(0xA0.7),C
56: c10=(pwm_c[9]>num_pwm)?1:0;
C:0x009D E512 MOV A,0x12
C:0x009F D3 SETB C
C:0x00A0 9508 SUBB A,num_pwm(0x08)
C:0x00A2 4003 JC C:00A7
C:0x00A4 D3 SETB C
C:0x00A5 8001 SJMP C:00A8
C:0x00A7 C3 CLR C
C:0x00A8 92A6 MOV c10(0xA0.6),C
57: c11=(pwm_c[10]>num_pwm)?1:0;
C:0x00AA E513 MOV A,0x13
C:0x00AC D3 SETB C
C:0x00AD 9508 SUBB A,num_pwm(0x08)
C:0x00AF 4003 JC C:00B4
C:0x00B1 D3 SETB C
C:0x00B2 8001 SJMP C:00B5
C:0x00B4 C3 CLR C
C:0x00B5 92A5 MOV c11(0xA0.5),C
58: c12=(pwm_c[11]>num_pwm)?1:0;
C:0x00B7 E514 MOV A,0x14
C:0x00B9 D3 SETB C
C:0x00BA 9508 SUBB A,num_pwm(0x08)
C:0x00BC 4003 JC C:00C1
C:0x00BE D3 SETB C
C:0x00BF 8001 SJMP C:00C2
C:0x00C1 C3 CLR C
C:0x00C2 92A4 MOV c12(0xA0.4),C
59: c13=(pwm_c[12]>num_pwm)?1:0;
C:0x00C4 E515 MOV A,0x15
C:0x00C6 D3 SETB C
C:0x00C7 9508 SUBB A,num_pwm(0x08)
C:0x00C9 4003 JC C:00CE
C:0x00CB D3 SETB C
C:0x00CC 8001 SJMP C:00CF
C:0x00CE C3 CLR C
C:0x00CF 92A3 MOV c13(0xA0.3),C
60: c14=(pwm_c[13]>num_pwm)?1:0;
C:0x00D1 E516 MOV A,0x16
C:0x00D3 D3 SETB C
C:0x00D4 9508 SUBB A,num_pwm(0x08)
C:0x00D6 4003 JC C:00DB
C:0x00D8 D3 SETB C
C:0x00D9 8001 SJMP C:00DC
C:0x00DB C3 CLR C
C:0x00DC 92A2 MOV c14(0xA0.2),C
61: c15=(pwm_c[14]>num_pwm)?1:0;
C:0x00DE E517 MOV A,0x17
C:0x00E0 D3 SETB C
C:0x00E1 9508 SUBB A,num_pwm(0x08)
C:0x00E3 4003 JC C:00E8
C:0x00E5 D3 SETB C
C:0x00E6 8001 SJMP C:00E9
C:0x00E8 C3 CLR C
C:0x00E9 92A1 MOV c15(0xA0.1),C
62: c16=(pwm_c[15]>num_pwm)?1:0;
C:0x00EB E518 MOV A,0x18
C:0x00ED D3 SETB C
C:0x00EE 9508 SUBB A,num_pwm(0x08)
C:0x00F0 4003 JC C:00F5
C:0x00F2 D3 SETB C
C:0x00F3 8001 SJMP C:00F6
C:0x00F5 C3 CLR C
C:0x00F6 92A0 MOV c16(0xA0.0),C
63: c17=(pwm_c[16]>num_pwm)?1:0;
C:0x00F8 E519 MOV A,0x19
C:0x00FA D3 SETB C
C:0x00FB 9508 SUBB A,num_pwm(0x08)
C:0x00FD 4003 JC C:0102
C:0x00FF D3 SETB C
C:0x0100 8001 SJMP C:0103
C:0x0102 C3 CLR C
C:0x0103 92B7 MOV c17(0xB0.7),C
64: c18=(pwm_c[17]>num_pwm)?1:0;
C:0x0105 E51A MOV A,0x1A
C:0x0107 D3 SETB C
C:0x0108 9508 SUBB A,num_pwm(0x08)
C:0x010A 4003 JC C:010F
C:0x010C D3 SETB C
C:0x010D 8001 SJMP C:0110
C:0x010F C3 CLR C
C:0x0110 92B6 MOV c18(0xB0.6),C
65: c19=(pwm_c[18]>num_pwm)?1:0;
C:0x0112 E51B MOV A,0x1B
C:0x0114 D3 SETB C
C:0x0115 9508 SUBB A,num_pwm(0x08)
C:0x0117 4003 JC C:011C
C:0x0119 D3 SETB C
C:0x011A 8001 SJMP C:011D
C:0x011C C3 CLR C
C:0x011D 92B5 MOV c19(0xB0.5),C
66: c20=(pwm_c[19]>num_pwm)?1:0;
C:0x011F E51C MOV A,0x1C
C:0x0121 D3 SETB C
C:0x0122 9508 SUBB A,num_pwm(0x08)
C:0x0124 4003 JC C:0129
C:0x0126 D3 SETB C
C:0x0127 8001 SJMP C:012A
C:0x0129 C3 CLR C
C:0x012A 92B4 MOV c20(0xB0.4),C
67: c21=(pwm_c[20]>num_pwm)?1:0;
C:0x012C E51D MOV A,0x1D
C:0x012E D3 SETB C
C:0x012F 9508 SUBB A,num_pwm(0x08)
C:0x0131 4003 JC C:0136
C:0x0133 D3 SETB C
C:0x0134 8001 SJMP C:0137
C:0x0136 C3 CLR C
C:0x0137 92B3 MOV c21(0xB0.3),C
68: c22=(pwm_c[21]>num_pwm)?1:0;
C:0x0139 E51E MOV A,0x1E
C:0x013B D3 SETB C
C:0x013C 9508 SUBB A,num_pwm(0x08)
C:0x013E 4003 JC C:0143
C:0x0140 D3 SETB C
C:0x0141 8001 SJMP C:0144
C:0x0143 C3 CLR C
C:0x0144 92B2 MOV c22(0xB0.2),C
69: c23=(pwm_c[22]>num_pwm)?1:0;
C:0x0146 E51F MOV A,0x1F
C:0x0148 D3 SETB C
C:0x0149 9508 SUBB A,num_pwm(0x08)
C:0x014B 4003 JC C:0150
C:0x014D D3 SETB C
C:0x014E 8001 SJMP C:0151
C:0x0150 C3 CLR C
C:0x0151 92B1 MOV c23(0xB0.1),C
70: c24=(pwm_c[23]>num_pwm)?1:0;
C:0x0153 E520 MOV A,0x20
C:0x0155 D3 SETB C
C:0x0156 9508 SUBB A,num_pwm(0x08)
C:0x0158 4003 JC C:015D
C:0x015A D3 SETB C
C:0x015B 8001 SJMP C:015E
C:0x015D C3 CLR C
C:0x015E 92B0 MOV c24(0xB0.0),C
71: c25=(pwm_c[24]>num_pwm)?1:0;
C:0x0160 E521 MOV A,0x21
C:0x0162 D3 SETB C
C:0x0163 9508 SUBB A,num_pwm(0x08)
C:0x0165 4003 JC C:016A
C:0x0167 D3 SETB C
C:0x0168 8001 SJMP C:016B
C:0x016A C3 CLR C
C:0x016B 9297 MOV c25(0x90.7),C
72: c26=(pwm_c[25]>num_pwm)?1:0;
C:0x016D E522 MOV A,0x22
C:0x016F D3 SETB C
C:0x0170 9508 SUBB A,num_pwm(0x08)
C:0x0172 4003 JC C:0177
C:0x0174 D3 SETB C
C:0x0175 8001 SJMP C:0178
C:0x0177 C3 CLR C
C:0x0178 9296 MOV c26(0x90.6),C
73: c27=(pwm_c[26]>num_pwm)?1:0;
C:0x017A E523 MOV A,0x23
C:0x017C D3 SETB C
C:0x017D 9508 SUBB A,num_pwm(0x08)
C:0x017F 4003 JC C:0184
C:0x0181 D3 SETB C
C:0x0182 8001 SJMP C:0185
C:0x0184 C3 CLR C
C:0x0185 9295 MOV c27(0x90.5),C
74: c28=(pwm_c[27]>num_pwm)?1:0;
C:0x0187 E524 MOV A,0x24
C:0x0189 D3 SETB C
C:0x018A 9508 SUBB A,num_pwm(0x08)
C:0x018C 4003 JC C:0191
C:0x018E D3 SETB C
C:0x018F 8001 SJMP C:0192
C:0x0191 C3 CLR C
C:0x0192 9294 MOV c28(0x90.4),C
75: c29=(pwm_c[28]>num_pwm)?1:0;
C:0x0194 E525 MOV A,0x25
C:0x0196 D3 SETB C
C:0x0197 9508 SUBB A,num_pwm(0x08)
C:0x0199 4003 JC C:019E
C:0x019B D3 SETB C
C:0x019C 8001 SJMP C:019F
C:0x019E C3 CLR C
C:0x019F 9293 MOV c29(0x90.3),C
76: c30=(pwm_c[29]>num_pwm)?1:0;
C:0x01A1 E526 MOV A,0x26
C:0x01A3 D3 SETB C
C:0x01A4 9508 SUBB A,num_pwm(0x08)
C:0x01A6 4003 JC C:01AB
C:0x01A8 D3 SETB C
C:0x01A9 8001 SJMP C:01AC
C:0x01AB C3 CLR C
C:0x01AC 9292 MOV c30(0x90.2),C
77: c31=(pwm_c[30]>num_pwm)?1:0;
C:0x01AE E527 MOV A,0x27
C:0x01B0 D3 SETB C
C:0x01B1 9508 SUBB A,num_pwm(0x08)
C:0x01B3 4003 JC C:01B8
C:0x01B5 D3 SETB C
C:0x01B6 8001 SJMP C:01B9
C:0x01B8 C3 CLR C
C:0x01B9 9291 MOV c31(0x90.1),C
78: c32=(pwm_c[31]>num_pwm)?1:0;
79:
C:0x01BB E528 MOV A,0x28
C:0x01BD D3 SETB C
C:0x01BE 9508 SUBB A,num_pwm(0x08)
C:0x01C0 4003 JC C:01C5
C:0x01C2 D3 SETB C
C:0x01C3 8001 SJMP C:01C6
C:0x01C5 C3 CLR C
C:0x01C6 9290 MOV c32(0x90.0),C
80: if(++num_pwm==100){
C:0x01C8 0508 INC num_pwm(0x08)
C:0x01CA E508 MOV A,num_pwm(0x08)
C:0x01CC B46403 CJNE A,#0x64,C:01D2
81: num_pwm=0;
C:0x01CF 750800 MOV num_pwm(0x08),#0x00
82: }
83: ++delay_in_t1;
C:0x01D2 052A INC 0x2A
C:0x01D4 E52A MOV A,0x2A
C:0x01D6 7002 JNZ C:01DA
C:0x01D8 0529 INC delay_in_t1(0x29)
84: }
void isr_timer1() interrupt 3 using 2{
TH1=0xFE; /* -24000000/12/60/100 ~= -333 ->0xfeb3 (100 nghia la 100 muc sang)*/
TL1=0xB3; /* chu ky ngat timer1 T=(333/2)us --> T*6 = 999 us ~= 1ms*/
43: void isr_timer1() interrupt 3 using 2{
C:0x001E C0E0 PUSH ACC(0xE0) ;2ckm
C:0x0020 C0D0 PUSH PSW(0xD0) ;2ckm
44: TH1=0xFE; /* -24000000/12/60/100 ~= -333 ->0xfeb3 (100 nghia la 100 muc sang)*/
C:0x0022 758DFE MOV TH1(0x8D),#0xFE ;2ckm
45: TL1=0xB3; /* chu ky ngat timer1 T=(333/2)us --> T*6 = 999 us ~= 1ms*/
46:
C:0x0025 758BB3 MOV TL1(0x8B),#0xB3 ;2ckm
c1=(pwm_c[0]>num_pwm)?1:0;
47: c1=(pwm_c[0]>num_pwm)?1:0; C:0x0028 E509 MOV A,pwm_c(0x09) ;1ckm C:0x002A D3 SETB C ;1ckm C:0x002B 9508 SUBB A,num_pwm(0x08) ;1ckm C:0x002D 4003 JC C:0032 ;2ckm C:0x002F D3 SETB C ;1ckm C:0x0030 8001 SJMP C:0033 ;2ckm C:0x0032 C3 CLR C ;1ckm C:0x0033 9280 MOV c1(0x80.0),C ;2ckm
if(++num_pwm==100){
num_pwm=0;
}
++delay_in_t1;
80: if(++num_pwm==100){
C:0x01C8 0508 INC num_pwm(0x08) ;1ckm
C:0x01CA E508 MOV A,num_pwm(0x08) ;1ckm
C:0x01CC B46403 CJNE A,#0x64,C:01D2 ;2ckm
81: num_pwm=0;
C:0x01CF 750800 MOV num_pwm(0x08),#0x00 ;2ckm
82: }
83: ++delay_in_t1;
C:0x01D2 052A INC 0x2A ;1ckm
C:0x01D4 E52A MOV A,0x2A ;1ckm
C:0x01D6 7002 JNZ C:01DA ;2ckm
C:0x01D8 0529 INC delay_in_t1(0x29) ;1ckm
C:0x01DA D0D0 POP PSW(0xD0) ;2ckm
C:0x01DC D0E0 POP ACC(0xE0) ;2ckm
C:0x01DE 32 RETI ;2ckm
/*Thach anh su dung f=24Mhz*/
#include "regx52.h"
typedef unsigned char uchar;
typedef unsigned int uint;
sbit c1=P0^0;
sbit c2=P0^1;
sbit c3=P0^2;
sbit c4=P0^3;
sbit c5=P0^4;
sbit c6=P0^5;
sbit c7=P0^6;
sbit c8=P0^7;
sbit c9=P2^7;
sbit c10=P2^6;
sbit c11=P2^5;
sbit c12=P2^4;
sbit c13=P2^3;
sbit c14=P2^2;
sbit c15=P2^1;
sbit c16=P2^0;
sbit c17=P3^7;
sbit c18=P3^6;
sbit c19=P3^5;
sbit c20=P3^4;
sbit c21=P3^3;
sbit c22=P3^2;
sbit c23=P3^1;
sbit c24=P3^0;
sbit c25=P1^7;
sbit c26=P1^6;
sbit c27=P1^5;
sbit c28=P1^4;
sbit c29=P1^3;
sbit c30=P1^2;
sbit c31=P1^1;
sbit c32=P1^0;
uchar num_pwm;
uchar pwm_c[32];
uint delay_in_t1;
void isr_timer1() interrupt 3 using 2{
TH1=0xFD; /* -24000000/12/60/50 ~= -666 ->0xFD66 (50 nghia la 50 muc sang)*/
TL1=0x66; /* chu ky ngat timer1 T=(666/2)us --> T*3 = 999 us ~= 1ms*/
c1=(pwm_c[0]>num_pwm)?1:0;
c2=(pwm_c[1]>num_pwm)?1:0;
c3=(pwm_c[2]>num_pwm)?1:0;
c4=(pwm_c[3]>num_pwm)?1:0;
c5=(pwm_c[4]>num_pwm)?1:0;
c6=(pwm_c[5]>num_pwm)?1:0;
c7=(pwm_c[6]>num_pwm)?1:0;
c8=(pwm_c[7]>num_pwm)?1:0;
c9=(pwm_c[8]>num_pwm)?1:0;
c10=(pwm_c[9]>num_pwm)?1:0;
c11=(pwm_c[10]>num_pwm)?1:0;
c12=(pwm_c[11]>num_pwm)?1:0;
c13=(pwm_c[12]>num_pwm)?1:0;
c14=(pwm_c[13]>num_pwm)?1:0;
c15=(pwm_c[14]>num_pwm)?1:0;
c16=(pwm_c[15]>num_pwm)?1:0;
c17=(pwm_c[16]>num_pwm)?1:0;
c18=(pwm_c[17]>num_pwm)?1:0;
c19=(pwm_c[18]>num_pwm)?1:0;
c20=(pwm_c[19]>num_pwm)?1:0;
c21=(pwm_c[20]>num_pwm)?1:0;
c22=(pwm_c[21]>num_pwm)?1:0;
c23=(pwm_c[22]>num_pwm)?1:0;
c24=(pwm_c[23]>num_pwm)?1:0;
c25=(pwm_c[24]>num_pwm)?1:0;
c26=(pwm_c[25]>num_pwm)?1:0;
c27=(pwm_c[26]>num_pwm)?1:0;
c28=(pwm_c[27]>num_pwm)?1:0;
c29=(pwm_c[28]>num_pwm)?1:0;
c30=(pwm_c[29]>num_pwm)?1:0;
c31=(pwm_c[30]>num_pwm)?1:0;
c32=(pwm_c[31]>num_pwm)?1:0;
if(++num_pwm==100){
num_pwm=0;
}
++delay_in_t1;
}
void delay_ms(uint time){
delay_in_t1 = 0;
while(delay_in_t1 <= time*3);
}
void main(){
TMOD=0x10; /*timer 1 16bit*/
TR1=1;
TH1=0xFD;
TL1=0x66;
IE=0x88; /*Ket thuc khoi dong timer1*/
P0 = 0;
P1 = 0;
P2 = 0;
P3 = 0;
delay_ms(3000);
while(1){
}
}
.. thank a trước nhé
e có xem qua toàn bộ bài viết của anh có hiểu dc chút ít nhưng viết thì hok đúng như ý mún @@ .. thank anh
. Có điều trường hợp này do trong chưong trình phục vụ ngắt thì counter vẫn đếm thì phải là không có sai số đáng kể mới phải chứ? vì counter không bị ngừng. Nếu bạn cho TRx=0 để ngừng counter ở đầu chưong trình phục vụ ngắt và ở cuối TRx=1 thì có phải là thời gian thực thi của trình phục vụ ngắt chính là sai số thời gian cho ngắt không? Giả sử bạn setup thời gian là 1000 chu kì máy, thời gian thực thi chương trình phục vụ ngắt là 200 chu kỳ máy, thì trường hợp này ngắt sẽ xảy ra sau ~= 1200 chu kỳ máy 1 lần so với 1000 bạn setup ban đầu sai số là ~= 200 chu kỳ máy?
Comment