markdown:
# Tài liệu ASM - PIC (P1)
Chia sẻ: Goi Xanh Xanh | Ngày: | Loại File: PDF | Số trang:20
lượt xem 149
download
![](http://image.tlvnimg.com/document/thumbnail/2010/20100922/goixanh/80x100/tai_lieu_asm_pic01_1017.jpg)
##
Tài liệu ASM - PIC (P1)
[Vui lòng tải xuống để xem tài liệu đầy đủ](javascript:void(0);)
Download
![](images/down16x21.png)
Thanh ghi (Register): Thanh ghi được đặt trong PIC, nó có thể được ghi, đọc. Hãy tưởng tượng các thanh ghi giống như các mẩu giấy mà chúng ta có thể đọc hay viết thông tin lên nó. Hình bên dưới mô tả file thanh ghi (register file) được ánh xạ vào PIC16F84. PIC được chia làm 2 phần, Bank0 và Bank1. Bank1 dùng để điều khiển các hoạt động của PIC, ví dụ như nói cho nó biết những bit nào trên PortA là đi vào (Input) và những bit nào xuất ra (Output). Bank0 dùng để thao tác...
Bình luận(0)
[Đăng nhập để gửi bình luận!](javascript:void(0);)
##
Nội dung Text: Tài liệu ASM - PIC (P1)
- Dson 1 Thanh ghi (Register): Thanh ghi được đặt trong PIC, nó có thể được ghi, đọc. Hãy tưởng tượng các thanh ghi giống như các mẩu giấy mà chúng ta có thể đọc hay viết thông tin lên nó. Hình bên dưới mô tả file thanh ghi (register file) được ánh xạ vào PIC16F84. PIC được chia làm 2 phần, Bank0 và Bank1. Bank1 dùng để điều khiển các hoạt động của PIC, ví dụ như nói cho nó biết những bit nào trên PortA là đi vào (Input) và những bit nào xuất ra (Output). Bank0 dùng để thao tác trên dữ liệu, ví dụ ta muốn làm cho bit nào đó trên PortA lên mức cao, đầu tiên ta ta phải chuyển đến Bank1 để set 1 bit của 1 chân cụ thể nào đó trên PortA trở thành Output, sau đó ta chuyển đến Bank0 và gởi mức 1 tới chân đó. Những thanh ghi thông thường nhất trên Bank1 mà chúng ta sẽ sử dụng là các thanh ghi STATUS, TRISA and TRISB. Đầu tiên chúng ta hãy quay vào Bank1, thanh ghi TRISA cho phép ta chọn chân nào đó trên PortA làm ngõ Output hay Input, thanh ghi TRISB cho phép ta chọn chân nào đó trên PortB làm ngõ Output hay Input, thanh ghi STATUS cho phép chọn sử dụng Bank0 hay Bank1. STATUS: Để thay đổi từ Bank0 sang Bank1 ta sử dụng thanh ghi trạng thái STATUS, set bit5 của thanh ghi trạng thái lên1 để chọn Bank1 hoặc xoá bit5 về 0 để chọn Bank0, thanh ghi STATUS có địa chỉ 03H. TRISA và TRISB: 2 thanh ghi TRISA and TRISB đặt tại địa chỉ 85H và 86H, để lập trình cho các chân trên 2 thanh ghi này thông thường người ta gởi mức 0 hay 1 đến các bit tương ứng trên thanh ghi, có thể làm điều này trong cả 2 dạng hoặc là bằng số binary (bin) hay hex. Dùng kiểu binary thì rõ ràng hơn là kiểu hex nhưng mà trông lượm thượm hơn !. Trên PortA ta có 5 chân tương ứng 5 bit, nếu muốn đặt 1 trong 5 chân này thành Output ta phải gởi 1 đến bit tương ứng với nó, những bít này có tên bit đúng chính xác với tên của nó, nói cách khác bit0 là RA0, bit1 là RA1, bit2 là RA2…. Hãy xem ví dụ: Nếu ta muốn set RA0, RA3 và RA4 thành Output và RA1, RA2 thành Inputs, ta phải gởi 00110 (=06h), nên nhớ bit thấp nằm bên phải, xem hình: Port A Pin RA4 RA3 RA2 RA1 RA0 Bit Number 4 3 2 1 0 Binary 0 0 1 1 0
- Dson 2 Tương tự chúng ta cũng làm như vậy cho TRISB. PORTA và PORTB: Để làm cho 1 trong những chân Output lên mức cao ta gởi 1 đến bit tương ứng trên thanh ghi PORTA hoặc PORTB, giống như cách làm trên thanh ghi TRISA và TRISB, có thể kiểm tra lại trên từng chân của Port. Thanh ghi W: Thanh ghi W là là thanh ghi mụch đích chung mà có thể đặt lên nó bất kỳ giá trị nào ta muốn, khi gán cho thanh ghi W một giá trị nào đó, ta có thể cộng nó với 1 giá trị khác hoặc có thể copy nó (Mov). Nếu bạn gán 1 giá trị nào đó lên thanh ghi W thì nội dung trước đó của nó sẽ bị ghi đè lên. Xem ví dụ sử dụng PortA: Đầu tiên chúng ta cần chọn Bank0 hoặc Bank1 bằng cách set trên thanh ghi STATUS, địa chỉ của STATUS là 03H và hãy set bit5 của nó lên 1 theo cách sau: BSF 03h,5 BSF có nghĩa là Bit Set F, từ F nghĩa là chúng ta sẽ sử dụng một vị trí nào đó trong memory hoặc trong thanh ghi, 2 con số “03H” sau câu lệnh BSF nghĩa là địa chỉ của thanh ghi STATUS, con số “5” tức là bit5 của nó, như vậy ý nghĩa của câu lệnh trên là set bit5 của STATUS lên 1. Bây giờ chúng ta thao tác trong Bank1. MOVLW b'00110' Ta đã đặt giá trị binary 00110 vào trong thanh ghi mụch đích chung W, chữ b có nghĩa là binary, dĩ nhiên ta cũng có thể viết lại trong dạng số hex, nó như sau: MOVLW 06h MOVLW có nghĩa là là ‘Move Literal Value Into W’ tạm dịch là di chuyển giá trị của Literal vào thanh ghi W, để rõ ràng hơn ta có thể nói là “ đặt giá trị trực tiếp sau đây (06H) vào trong thanh ghi W “ Bây giờ ta tiếp tục đặt giá trị đó vào trong thanh ghi TRISA để thiết lập trạng thái cho Port: MOVWF 85h Lệnh này có nghĩa là “MOV nội dung của W vào (thanh ghi có) địa chỉ 85h”, trong trường hợp này con trỏ địa chỉ sẽ trỏ tới TRISA, thanh ghi TRISA bây giờ chứa giá trị 00110, xem lại mô tả các câu lệnh bằng hình sau: Port A Pin RA4 RA3 RA2 RA1 RA0 Binary 0 0 1 1 0 Input/Output O O I I O Bây giờ chúng ta sẽ thiết lập các chân trên PORTA, hãy quay về Bank0 để thao tác trên các dữ liệu. BCF 03h,5
- Dson 3 Lệnh BCF thì đối nghịch với BSF, nó có nghĩa là “ Bit Clear F” tạm dịch là xoá bit nào đó trong vùng memory hay trong thanh ghi nào đó, trong trường hợp này là thanh ghi STATUS (vì địa chỉ của nó là 03H) và lệnh này xoá bit5 của STATUS. Bên dưới là đoạn code: BSF 03h,5 ; vào Bank 1 MOVLW 06h ; Đặt giá trị 00110 vào W MOVWF 85h ; Move 00110 vào trong TRISA BCF 03h,5 ; Quay trở về Bank 0 Hãy đọc kỹ đoạn code trên cho đến khi nào bạn hiểu nó đang làm cái gì. Ghi lên Port: Trong phần trên chúng ta đã nói đến làm thế nào để thiết lập các chân của Port trở thành Input hay Output, trong phần này ta sẽ nói tiếp làm sao có thể gởi data tới Port và trong phần kế tiếp chúng ta sẽ kết thúc với một đoạn code làm cho đèn Led chớp tắt với cả sơ đồ mạch để có thể hiểu rõ con Pic làm việc chính xác đến mức độ nào, đừng có thử compile và nạp đoạn code vào con Pic của bạn vì nó chỉ là ví dụ mà thôi. Đầu tiên hãy setup bit2 của Port A thành Output. Bsf 03h,5 ; Vào Bank 1 Movlw 00h ; Đặt giá trị 00000 vào trong W Movwf 85h ; Copy 00000 vào trong TRISA, tất ; cả các chân bây giờ sẽ trở ;thànhOutput bcf 03h,5 ; Quay trở về Bank0 Đoạn code trên là những gì đã nói trong phần trước, chỉ khác là bây giờ ta set tất cả các chân của PortA trở thành Output bằng cách gởi giá trị 0 đến thanh ghi w (thanh ghi W là loại thanh ghi có 3 trạng thái tri-state register). Bây giờ những gì mà ta muốn con Pic phải làm là bật tất cả Led lên, để làm điều này ta phải gởi mức 1 đến các chân Led, hãy xem làm như thế nào đây: movlw 02h ; Ghi 02h vào thanh ghi W. nó là 00010 nếu ; viết theo dạng binary, như vậy nó đặt 0 vào ; bit 2 (chân 18) trong khi giữ các chân khác ở ; ;mức 0. movwf 05h ;Bây giờ copy nội dung của W (02H) vào ;PortA (địa chỉ là 05H). Con Led bây giờ đã bật on, chúng ta thử tắt nó xem: movlw 00h ; Ghi 00h vào thanh ghi W. nó là 00000 nếu ; viết theo dạng binary, như vậy nó đặt 0 vào ; tất cả các chân. movwf 05h ; Bây giờ copy nội dung của W ( 02H) vào ; PortA Bây giờ Led đã bị tắt. Để làm cho led sáng, tắt liên tục chúng ta phải làm cho chương trình quay trở lại điểm bắt đầu bằng cách đặt nhãn cho chương trình và nói cho nó biết đó là điểm bắt đầu mà nó phải quay lại thực hiện lần nữa. Rất đơn giản, hãy đặt 1 cái nhãn có tên là START ngay tại điểm bắt đầu của đoạn code.
- Dson 4 Start movlw 02h ; Write 02h to the W register. In binary ; this is 00010, which puts a ‘1’ on pin2 ; while keeping the other pins to ‘0’ movwf 05h ; Now move the contents of W (02h) ; onto the PortA, whose address is 05h movlw 00h ; Write 00h to the W register. This puts a ; 0’ on all pins. movwf 05h ; Now move the contents of W (0h) onto ; the Port A, whose address is 05h goto Start ; Goto where we say Start Bây giờ hãy xem lại đoạn code: Bsf 03h,5 Movlw 00h Movwf 85h bcf 03h,5 Start movlw 02h Movwf 05h Movlw 00h Movwf 05h Goto Start Chúng ta chỉ nhìn thấy toàn những con số, bạn muốn hiểu được nó thì phải nhớ hết tất cả những địa chỉ của các thanh ghi, các Port …. Nhưng ngay cả khi bạn nhớ được tất cả thì một đoạn code ngắn nhất như trên cũng có thể làm bạn bối rối, để giải quyết vấn đề này hãy gán cho các con số địa chỉ bằng 1 cái tên bằng lệnh EQU. EQU đơn giản là thay một cái gì đó bằng một cái gì đó !, nó không phải là câu lệnh của con PIC mà nó là câu lệnh của assembler, với lệnh EQU bạn có thể gán bất kỳ địa chỉ thanh ghi nào bằng 1 cái tên gợi nhớ hoặc gán một cái tên cho một hằng số trong đoạn chương trình. Hãy thử gán vài hằng số bằng những cái tên bạn sẽ thấy nó dể đọc đến như thế nào. STATUS equ 03h ; this assigns the word STATUS to the value of 03h, ; which is the address of the STATUS register. TRISA equ 85h ; This assigns the word TRISA to the value of 85h, ; which is the address of the Tri-State register for ; PortA PORTA equ 05h ;This assigns the word PORTA to 05h which is the ; address of Port A. Bây giờ hãy thiếp lập các giá trị hằng số và đặt chúng vào chương trình, các giá trị hằng số phải được định nghĩa trước khi đặt vào chương trình và hãy nhớ phải luôn đặt chúng vào vị trí bắt đầu của chương trình. Bây giờ hãy xoá hết các ghi chú sau các câu lệnh, bạn thử nhìn xem có dể dàng hiểu được đoạn code trên khi không có các dòng ghi chú: STATUS equ 03h TRISA equ 85h PORTA equ 05h
- Dson 5 Bsf STATUS,5 movlw 00h movwf TRISA bcf STATUS,5 Start movlw 02h Movwf PORTA movlw 00h movwf PORTA goto Start Hy vọng rằng bạn có thể hiểu được đoạn code trên ngay cả khi không có các ghi chú cho các câu lệnh. Delay Loops. Có một chút rắc rối về đoạn code chớp tắt đèn led mà ta đã xem bên trên. Mỗi lệnh thực thi mất 1 chu kỳ xung clock, nếu ta sử dụng thạch anh 4MHz thì mỗi lệnh mất 4/4MHz hay 1us, trong đoạn code trên, ta sử dụng 5 lệnh như vậy mất 5us để thực thi hoàn toàn, quá nhanh để mắt người có thể nhìn thấy đèn led chớp tắt trong khỏang thời gian ngắn ngủi như vậy, cái mà ta cần là làm cho khoảng thời gian giữa sáng và tắt của led kéo dài ra, nói cách khác là làm trễ (Delay). Cơ bản của 1 chương trình Delay là cho đếm ngược lại giá trị đã đặt trước đó, và khi nó đến zero (0) thì ta cho dừng bộ đếm, giá trị zero báo cho biết dừng chương trình delay và sẽ tiếp tục thực thi lại nếu ta muốn. Đầu tiên chúng ta phải định nghĩa một hằng số dùng trong bộ đếm, tạm thời chúng ta gọi là hằng số COUNT, kế đến chúng ta phải xác định bộ đếm sẽ thực hiện đếm bao nhiêu, số lớn nhất mà ta có thể dùng cho bộ đếm là 255 hoặc số hex là FFh. Lệnh EQU gán 1 giá trị cho 1 thanh ghi, điều này có nghĩa là bất kỳ con số nào mà ta gán cho COUNT thì COUNT sẽ có giá trị bằng với nội dung của địa chỉ đó. Nếu thử gán giá trị FFh cho COUNT ta sẽ nhận được thông báo lỗi khi compile chương trình bởi vì địa chỉ FFH đã được dùng cho mụch đích khác và chúng ta không thể truy cập tới nó, như vậy chúng ta phải gán một con số như thế nào cho hợp lệ ?, bạn đừng lo lắng, sẽ có cách giải quyết. Nếu chúng ta gán COUNT cho 1 địa chỉ nào đó, ví dụ 08h, nó sẽ trỏ tới vị trí thanh ghi mụch đích chung, nhưng mà giá trị mặc nhiên sau khi mở nguồn của những vị trí không dùng đến là FFh vì vậy nếu COUNT trỏ tới 08h thì nó sẽ có giá trị FFh. Bây giờ tôi lại đang nghe bạn “khóc” rằng làm sao mà gán COUNT bằng một số nào đó có giá trị trùng với 1 trong các địa chỉ của các thanh ghi đã sử dụng?, không sao, nếu vậy thì điều mà chúng ta phải làm là MOV giá trị của bạn tới vị trí này, giả sử nếu bạn muốn COUNT có giá trị là 85h, chúng ta không thể làm: COUNT EQU 85h Bởi vì 85h là vị trí của thanh ghi xuất (out) 3 trạng thái (Tri-State register) của PORTA. Cái mà chúng ta phải làm là: Movlw 85h ; Đầu tiên đặt giá trị 85h vào thanh ghi W. Movwf 08h ; Kế đến copy giá trị tới thanh ghi 08h. Bây giờ, khi chúng ta nói: COUNT equ 08h Thì COUNT sẽ tương đương với giá trị 85h. Thật là quỷ quyệt, có phải không ?!
- Dson 6 Tiếp tục, đầu tiên ta định nghĩa cho một hằng số COUNT equ 08h kế đến giảm COUNT xuống 1 cho đến khi nó = 0, chỉ cần 1 lệnh đơn để làm việc này với sự hỗ trợ của lệnh GOTO và một cái nhãn, lệnh đơn được dùng là: DECFSZ COUNT,1 Lệnh DECFSZ sẽ giảm thanh ghi ( trong trường hợp này là COUNT) xuống một đơn vị được điền sau dấu phẩy (,), trong ví dụ này đơn vị là 1. Nếu nó giảm tới zero chương trình sẽ bỏ qua lệnh kế tiếp để nhảy đến thực thi lệnh thứ 2. Mất nhiều lời để giải thích cho 1 lệnh đơn có phải không?, hãy xem cái gì xảy ra khi ta đặt nó vào chương trình. COUNT equ 08h LABEL decfsz COUNT,1 Goto LABEL Carry on here. : : : Điều mà chúng ta phải làm đầu tiên là gán hằng số COUNT = 255, kế đến đặt 1 cái nhãn ngay bên cạnh lệnh defsz. Lệnh decfsz COUNT,1 sẽ giảm giá trị của COUNT xuống 1 và lưu giá trị đã giảm trở vào trong COUNT, nó cũng sẽ kiểm tra xem COUNT = 0 chưa, nếu chưa nó sẽ cho chương trình thực thi lệnh kế tiếp, trong ví dụ này nó sẽ thực thi lệnh GOTO để quay về lại điểm bắt đầu ( là LABEL), nếu COUNT = 0 thì nó sẽ cho chương trình bỏ qua lệnh kế tiếp và nhảy đến lệnh thứ 2, trong ví dụ này chương trình sẽ nhảy đến nơi có chữ ‘Carry on here’. Như bạn đã thấy, chúng ta đã làm cho chương trình lưu lại một thời gian trước khi nó tiếp tục làm việc gì đó tiếp theo, cái này gọi là vòng trễ (Delay loop), nếu chúng ta muốn thời gian trễ lớn hơn chúng ta phải làm một vòng trễ kiểu khác, nhưng mà cũng dể dàng để hiểu ra rằng có nhiều Loop hơn thì thời gian sẽ trễ lâu hơn, chúng ta cần ít nhất là 2 Loop như trên nếu muốn nhìn thấy đèn Led chớp. Bây giờ hãy đặt chúng vào trong chương trình và kết thúc chương trình, nhớ thêm các ghi chú. ;*****Set up the Constants**** STATUS equ 03h ;Address of the STATUS register TRISA equ 85h ;Address of the tristate register for Port A PORTA equ 05h ;Address of Port A COUNT1 equ 08h ;First counter for our delay loops COUNT2 equ 09h ;Second counter for our delay loops ;****Set up the Port**** bsf STATUS,5 ;Switch to Bank 1 movlw 00h ;Set the Port A pins movwf TRISA ;to Output.
- Dson 7 bcf STATUS,5 ;Switch back to Bank 0 ;****Turn the LED on**** Start movlw 02h ;Turn the LED on by first putting movwf PORTA ;it into the w register and then ;on the Port ;****Start of the delay loop 1**** Loop1 decfsz COUNT1,1 ;Subtract 1 from 255 Goto Loop1 ;If COUNT is zero, carry on. Decfsz COUNT2,1 ;Subtract 1 from 255 Goto Loop1 ;Go back to the start of our loop. ;This delay counts down from ;255 to zero, 255 times ;****Delay finished, now turn the LED off**** movlw 00h ;Turn the LED off by first putting movwf PORTA ; it into the w register and then onthe Port ;****Add another delay**** Loop2 decfsz COUNT1,1 ;This second loop keeps the Goto Loop2 ;LED turned off long enough for decfsz COUNT2,1 ;us to see it turned off goto Loop2 ; ;****Now go back to the start of the program goto Start ;go back to Start and turn LED ;on again ;****End of the program**** end ;Needed by some compilers, ;and also just in case we miss ;the goto instruction. Bạn có thể cpmpile chương trình này và nạp nó vào con PIC, dĩ nhiên là bạn sẽ muốn thử cho nó hoạt động, ở đây có sẵn sơ đồ mạch cho bạn. Xin chúc mừng, bạn vừa mới viết xong 1 chương trình cho con PIC và đã làm cho nó hoạt động theo mong đợi. Cho đến bây giờ bạn đã học được 7 trong số 35 lệnh của con PIC rồi đấy, nhưng mà như vậy bạn vẫn chưa thể điều khiển được các Port I/O của nó. Tại sao bạn không thử thay đổi Delay Loop cho nó nhanh hơn để biết giá trị Delay Loop tối thiểu mà mắt người có thể nhìn thấy đèn Led chớp tắt và thay đổi tốc độ chớp tắt của Led, ví dụ mỗi lần là 1 giây. Trong trường hợp này bạn cần phải thử thay đổi các giá trị hằng số COUNT khác nhau của mỗi Delay Loop. Trong phần tiếp theo chúng ta sẽ bàn đến cái gì gọi là thủ tục con (subroutine) để giúp chúng ta tiếp tục viết các chương trình nhỏ và thông thường nhất. Thủ tục con (subroutine):
- Dson 8 Một thủ tục con là một phần của một đoạn code hay một phần của một chương trình mà bạn có thể gọi nó thực thi bất kỳ lúc nào cần thiết. Một thủ tục con được sử dụng khi mà bạn muốn thực thi một chức năng nào đó nhiều hơn 1 lần, tức là làm đi làm lại chức năng đó, ví dụ như Delay Loop. Cái thuận tiện của một thủ tục con là bạn có thể thay đổi giá trị bên trong nó sau mỗi lần thực thi, ví dụ bạn có thể thay đổi 10 lần gía trị của nó nếu cần thiết, nhưng quan trọng nhất của một thủ tục con là bạn có thể tiết kiệm bộ nhớ chương trình chiếm đóng trong con Pic. Hãy xem một subroutine sau: ROUTINE COUNT equ 255 LABEL decfsz COUNT,1 Goto LABEL RETURN Đầu tiên chúng ta phải đặt cho subroutine một cái tên, tôi chọn tên ROUTINE, sau đó viết đoạn chương trình mà tôi muốn nó thực hiện, tôi viết lại chương trình Led chớp tắt như phần trên, cuối cùng tôi kết thúc subroutine bằng lệnh RETURN. Bạn có thể đặt subroutine này bất cứ nơi nào trong chương trình chính (MAIN) và khi muốn nó thực thi bạn chỉ cần gọi nó bằng lệnh CALL theo sau là tên của subroutine. Subroutine sẽ thực thi đoạn code bên trong nó cho đến khi nó gặp lệnh RETURN thì dừng lại, chương trình sẽ tự động quay về chương trình chính đúng tại nơi mà nó gọi subroutine và thực thi lệnh kế tiếp sau lệnh CALL. Bạn có thể CALL nhiều lần để thực thi cùng một subroutine nếu bạn muốn, đó là lý do tại sao người ta sử dụng subroutine để giảm độ dài của chương trình. Tuy nhiên có hai thứ mà bạn phải nghĩ đến, thứ nhất là bất kỳ hằng số nào cũng phải được khai báo trước khi bạn sử dụng nó nhưng mà trong trường hợp subroutine bạn có thể khai báo ngay trong bản thân nó hoặc ngay tại đầu chương trình chính như thông thường, tuy nhiên tôi lại khuyên bạn nên khai báo mọi thứ tại đầu chương trình chính vì như bạn đã biết, để mọi thứ ở cùng một nơi thì dể tìm kiến hơn, có phải không?. Vấn đề thứ hai rất quan trọng là bạn phải bảo đảm đặt subroutine sau lệnh RETURN của chương trình chính trừ phi trong chương trình chính bạn dùng lệnh GOTO để nhảy qua subroutine, nếu không nó sẽ thực thi bất kỳ lệnh nào mà nó bắt gặp bất kể bạn có muốn hay không bởi vì con Pic không phân biệt được đâu là chương trình chính đâu là subroutine. Hãy xem lại đoạn chương trình chớp Led nhưng mà lần này ta sử dụng subroutine cho Delay Loop bạn sẽ thấy chương trình đơn giản đến mức nào và xem subroutine làm việc ra sao. ;*****Set up the Constants**** STATUS equ 03h ;Address of the STATUS register TRISA equ 85h ;Address of the tristate register for Port A PORTA equ 05h ;Address of Port A COUNT1 equ 08h ;First counter for our delay loops COUNT2 equ 09h ;Second counter for our delay loops ;****Set up the Port****
- Dson 9 bsf STATUS,5 ;Switch to Bank 1 movlw 00h ;Set the Port A pins movwf TRISA ;to Output. Bcf STATUS,5 ;Switch back to Bank 0 ;****Turn the LED on**** Start movlw 02h ;Turn the LED on by first putting it movwf PORTA ;into the w register and then on the Port ;****Add a delay call Delay ;****Delay finished, now turn the LED off**** movlw 00h ;Turn the LED off by first putting it movwf PORTA ;into the w register and then on the Port ;****Add another delay**** call Delay ;****Now go back to the start of the program goto Start ;go back to Start and turn LED on again ;****Here is our Subroutine Delay Loop1 decfsz COUNT1,1 ;This second loop keeps the LED Goto Loop1 ;turned off long enough for us to Decfsz COUNT2,1 ;see it turned off Goto Loop1 ; Return ;****End of the program**** end ;Needed by some compilers, and ;also ;just in case we miss the goto instruction. Rõ ràng kích thước chương trình đã giảm đi nhiều khi sử dụng subroutine cho Delay Loop, mỗi lần ta muốn thực hiện Delay để làm cho Led ON hoặc cho Led Off, ta chỉ cần gọi subroutine Delay. Tại điểm kết thúc subroutine chương trình sẽ quay trở về ngay sau dòng lệnh CALL. Nếu không sử dụng subroutine chương trình chớp Led trên có thể cần đến 120byte bộ nhớ chương trình, nhưng khi sử dụng subroutine nó chỉ còn cần 103byte, thật ra số byte chênh lệch như vậy cũng không phải là vấn đề quan trọng lắm, nhưng mà bạn chỉ có 1024byte để chứa chương trình trong con Pic thì việc tiết kiệm được số byte như vậy quả là không uổng công nặn óc để làm subroutine, có phải không Trong phần kế tiếp chúng ta sẽ tìm hiểu làm sao mà đọc được Port. Đọc Port (Reading from the I/O Ports): Cho đến bây giờ bạn đã có thể ghi lên Port để làm cho Led chớp tắt, còn tiếp theo chúng ta sẽ tìm cách đọc lại nội dung trên chân I/O của Port. Trước tiên cần kết nối các chân Port tới mạch bên ngoài và theo dõi hoạt động tại đây.
- Dson 10 Nếu bạn còn nhớ những thứ đã nói đến trong các phần trước, để setup I/O Port chúng ta phải chuyển từ Bank0 sang Bank1, hãy làm cái này trước: STATUS equ 03h ;Address of the STATUS register TRISA equ 85h ;Address of the tristate register for Port A PORTA equ 05h ;Address of Port A Bsf STATUS,5 ;Switch to Bank 1 Để gán cho Port trở thành Output, chúng gởi 0 vào thanh ghi TrisA và để nó trở thành Input ta phải gởi 1 đến thanh ghi TrisA, quá đơn giản !. Movlw 01h ;Set the Port A pins Movwf TRISA ;to Input. Bcf STATUS,5 ;Switch back to Bank 0 Bây giờ chúng ta đặt bit0 của PortA trở thành Input, cái mà ta phải làm bây giờ là kiểm tra lại xem chân này đang ở mức cao hay thấp (mức1 hay mức 0), để làm được điều này ta sử dụng lệnh BTFSC và lệnh BTFSS. Lệnh BTFSC có nghĩa là làm động tác thử xem 1 bit được chỉ định trên thanh ghi có = 0 hay không, nếu là 0 thì bỏ qua lệnh kế tiếp. Lệnh BTFSS thì ngược lại, nó có nghĩa là làm động tác thử xem 1 bit được chỉ định trên thanh ghi có = 1 hay không, nếu là 1 thì bỏ qua lệnh kế tiếp. Chúng ta sẽ sử dụng lệnh nào?, cái này còn tuỳ thuộc vào bạn mong đợi chương trình đọc được cái gì trên Port. Ví dụ: Nếu bạn đang mong đợi ngõ Input là 1 thì hãy dùng lệnh BTFSS, hãy xem cái này: Code here : BTFSS PortA,0 Goto start Carry on here : : Chương trình sẽ chỉ nhảy đến dòng “Carry on here” nếu bit0 của PortA = 1. Bây giờ bạn hãy viết lại chương trình đèn Led chớp ở 1 tốc độ cố định, nhưng mà nếu đóng 1 cái Switch nào đó thì đèn Led sẽ chớp chậm hơn ½.. Bạn hoàn toàn có thể tự làm được mà, đừng có nhìn vào đoạn Code bên dưới xem sao. Chúng ta sử dụng cùng một mạch giống như phần trên nhưng mà thêm một cái Switch có một đầu nối vào chân RA0 của con Pic còn đầu kia mắc lên nguồn. ;*****Set up the Constants**** STATUS equ 03h ;Address of the STATUS register TRISA equ 85h ;Address of the tristate register for Port A PORTA equ 05h ;Address of Port A COUNT1 equ 08h ;First counter for our delay loops COUNT2 equ 09h ;Second counter for our delay loops ;****Set up the Port**** bsf STATUS,5 ;Switch to Bank 1 movlw 01h ;Set the Port A pins: movwf TRISA ;bit 1to Output, bit 0 to Input.
- Dson 11 Bcf STATUS,5 ;Switch back to Bank 0 ;****Turn the LED on**** Start movlw 02h ;Turn the LED on by first putting it Movwf PORTA ;into the w register and then on the Port ;****Check if the switch is closed BTFSC PORTA,0 ;Get the value from PORT A ;BIT 0. If it is a zero call Delay ;a zero, carry on as normal.If is is a 1, ;then add an extra delay routine ;****Add a delay call Delay ;****Delay finished, now turn the LED off**** movlw 00h ;Turn the LED off by first putting it movwf PORTA ;into the w register and then on the Port ;****Check if the switch is still closed BTFSC PORTA,0 ;Get the value from PORT ABIT 0. If it is a zero, Call Delay ;carry on as normal.If is a 1, then add anextra delay ;routine ;****Add another delay**** call Delay ;****Now go back to the start of the program goto Start ;go back to Start and turn LED on again ;****Here is our Subroutine Delay Loop1 Decfsz COUNT1,1 ;This second loop keeps the LED Goto Loop1 ;turned off long enough for us to decfsz COUNT2,1 ;see it turned off goto Loop1 ; return ;****End of the program**** end ;Needed by some compilers, and also ;just in case we miss the goto instruction. Đầu tiên chương trình bật Led on, kế đến kiểm tra xem cái Switch có đóng không, nếu nó đóng chương trình sẽ gọi Delay subroutine, thời gian Delay giống y như trước nhưng mà gọi subroutine thực thi 2 lần, nó sẽ làm tương tự như vậy cho trường hợp Led Off. Bây giờ bạn hãy compile chương trình và cho con Pic chạy thử, nhưng mà tôi có một lời cảnh cáo bạn rằng, toàn bộ những thứ mà bạn làm sẽ không gây ấn tượng cho bất kỳ ai không thích thú với lập trình cho vi xử lý, vì vậy cũng đừng có thất vọng nếu mà bạn đem khoe với những người thân trong gia đình rồi chỉ cho họ làm sao cho con Led chớp châm đi ….họ sẽ chỉ giả vờ ngạc nhiên thích thú mà thôi !, đó là những kinh nghiệm xương máu của tôi !. Nếu bạn theo sát từ đầu đến giờ thì bạn đã biết tổng cộng 10 trong số 35 lệnh của con Pic 16F84 rồi đấy và tất cả những thứ mà bạn biết chỉ đơn giản là làm cho con Led chớp tắt !, thật phí phạm thời gian có phải không ?, còn tôi thì nghĩ thật là phí phạm bộ nhớ của con Pic nếu phải viết chương trình dài như vậy chỉ để chớp tắt, nhan chậm đèn Led !, phải có cách gì đó làm cho hay hơn.
- Dson 12 Hãy xem ví dụ bên dưới, nó mới thật sự là một chương trình làm đèn Led chớp tắt, nhanh chậm. movlw 02h movwf PORTA movlw 00h movlw PORTA Đầu tiên ta nạp vào thanh ghiW giá trị 02h, sau đó copy nó sang thanh ghi PortA để bật Led on. Để tắt nó, ta Nạp gía trị 00h vào thanh ghi W sau đó copy nó tới thanh ghi PortA. Ở giữa chương trình ta phải gọi subroutine để cho đèn chớp tắt, chúng ta phải viết 2 lệnh MOV cho Led Off và 2 lệnh MOV cho Led on, 2 lệnh MOV sẽ thực hiện lần lượt ghi data vào thanh ghi W rồi chuyển vào PORTA. Sau đó ta gọi 2 lần Delay subroutine, 1 lần Delay cho Led on và 1 lần cho Led Off. Có cách nào khác đơn giản hơn không ?, có đấy, đó là sử dụng lệnh XORF. Lệnh XORF thực hiện hàm XOR cho data chứa trong thanh ghi, chắc là không cần phải giải thích hàm XOR cho bạn phải không ?. Như vậy để bật Led On/Off chúng ta chỉ cần 2 dòng Lệnh. MOVLW 02h XORWF PORTA,1 Đầu tiên nạp vào W giá trị 02h sau đó thực hiện lệnh XORF cho data trên PortA với giá trị 1, nếu hiện tại PortA có giá trị 1 thì nó sẽ thay đổi thành 0 còn nếu PortA đang là 0 sau khi lệnh XORF thực hiện nó sẽ trở thành 1. Hãy xem mô tã lại những gì mà chúng ta đã nói: PORTA 00010 xorwf 00000 xorwf 00010 xorwf 00000 xorwf 00010 Thật ra chúng ta không cần phải nạp mỗi lần cùng một giá trị vào trong thanh ghi W bởi vì có thể làm điều này ngay lúc bắt đầu chương trình, chỉ cần quay trở về lệnh lật ngược PortA lại mà thôi. Ngoài ra chúng ta cũng không cần phải gán một giá trị cho thanh ghi PortA, tại sao vậy?, bởi vì khi mới cấp nguồn cho con Pic thì PortA mặc nhiên đã = 1 rồi chúng ta chỉ cần lật qua lật lại cho PortA =0 rồi =1 mà thôi, ngay cả khi ban đầu PortA = 0 thì chúng ta cũng sẽ vẫn làm như vậy. Hãy xem 2 đoạn code mới, đoạn code thứ nhất viết theo kiểu như ban đầu, đoạn code thứ hai là viết lại nhưng dùng lệnh XORF. ;*****Set up the Constants**** STATUS equ 03h ;Address of the STATUS register TRISA equ 85h ;Address of the tristate register for Port A PORTA equ 05h ;Address of Port A COUNT1 equ 08h ;First counter for our delay loops COUNT2 equ 09h ;Second counter for our delay loops ;****Set up the Port**** bsf STATUS,5 ;Switch to Bank 1
- Dson 13 movlw 00h ;Set the Port A pins movwf TRISA ;to Output. Bcf STATUS,5 ;Switch back to Bank 0 movlw 02h ;Set up our w register with 02h ;****Turn the LED on and off**** Start Xorwf PORTA,1 ;Toggle the LED ;****Add a delay call Delay ;****Now go back to the start of the program goto Start ;go back to Start and turn LED on again ;****Here is our Subroutine Delay Loop1 decfsz COUNT1,1 ;This second loop keeps the LED Goto Loop1 ;turned off long enough for us to decfsz COUNT2,1 ;see it turned off goto Loop1 ; return ;****End of the program**** end ;Needed by some compilers, and also ;just in case we miss the goto instruction. ;*******Flashing LED With Switch: ;*******Set up the Constants**** STATUS equ 03h ;Address of the STATUS register TRISA equ 85h ;Address of the tristate register for Port A PORTA equ 05h ;Address of Port A COUNT1 equ 08h ;First counter for our delay loops COUNT2 equ 09h ;Second counter for our delay loops ;****Set up the Port**** bsf STATUS,5 ;Switch to Bank 1 movlw 01h ;Set the Port A pins: movwf TRISA ;bit 1to Output, bit 0 to Input. Bcf STATUS,5 ;Switch back to Bank 0 movlw 02h ; Set up our w register with 02h ;****Turn the LED on and off**** Start xorwf PORTA,1 ;Toggle the LED ;****Check if the switch is closed BTFSC PORTA,0 ;Get the value from PORT A BIT 0.If it is a ;zero call Delay ;carry on as normal. If is a 1, then add an ;extra delay routine ;****Add a delay call Delay ;****Check if the switch is still closed BTFSC PORTA,0 ;Get the value from PORT A BIT 0. If it is a ;zero, call Delay ;carry on as normal. If is a 1, then add an
- Dson 14 ;extra delay routine ;****Add another delay**** call Delay ;****Now go back to the start of the program goto Start ;go back to Start and turn LED on again ;****Here is our Subroutine Delay Loop1 Decfsz COUNT1,1 ;This second loop keeps the LED goto Loop1 ;turned off long enough for us to decfsz COUNT2,1 ;see it turned off goto Loop1 ; return ;****End of the program**** end ;Needed by some compilers, and also ;just in case we miss the goto instruction. Chỉ cần dùng các lệnh đơn giản chúng ta có thể giảm kích thước của chương trình. Thực sự ta đã giảm được bao nhiêu byte khi viết lại các chương trình bằng các lệnh đơn giản, hãy xem thống kê: Program Change Size (Bytes) Flashing LED Original 120 Flashing LED Subroutine Added 103 Flashing LED XOR Function Used 91 LED With Switch Original 132 LED With Switch XOR Function Used 124. Chúng ta không chỉ học vài lệnh mới mà còn học cách làm sao giảm kích thước của chương trình. Toán hạng Logic và Số học: Trong phần trên chúng ta được giới thiệu lệnh XORF và cách sử dụng nó, trong phần này sẽ nói tiếp các toán hạng và lệnh Logic mà con Pic có hỗ trợ. Bây giờ ta sẽ nói làm sao thao tác trên các bit riêng rẽ, thực hiện vài thuật toán thông thường trên dữ liệu. Sẽ không có ví dụ nữa nhưng mà sẽ giải thích cặn kẽ làm thế nào dùng các toán hạng trong các đoạn code nhỏ. Lệnh ANDLW và ANDWF: Con Pic cho ta 2 món được chế biến từ hàm AND, đó là lệnh ANDLW và ANDWF. Lệnh ANDLW cho phép ta AND nội dung trong thanh ghi W với một con số xác định, cú pháp là: ANDLW là cái mà ta sẽ AND với nội dung trong thanh ghi W, kết quả AND sẽ lưu trong thanh ghi W. Lệnh ANDWF cho phép ta AND thanh ghi W với một thanh ghi khác, ví dụ như với PortA, cú pháp là: ANDWF ,d
- Dson 15 là thanh ghi mà ta chỉ định, ví dụ PortA, d nói cho Pic biết nơi lưu kết quả. Nếu d=0 thì kết quả lưu vào thanh ghi W và d=1 thì kết quả lưu vào thanh ghi đứng trước d. Hai đoạn code bên dưới sẽ mô tã 1 ví dụ cho mỗi hàm AND. Đầu tiên kiểm tra trạng thái PortA là nơi mà ta cần biết ngõ vào có = 1100 hay không và đặt kết quả vào trong thanh ghi W. Movlw 1100 ANDWF 05h,0 Ví dụ thứ hai sẽ kiểm tra nội dung trong W. ANDLW 1100 Lệnh IOR: Lệnh IOR đơn giản như là một hàm OR, khi một trong hai bit =1 hoặc cả hai đều = 1 mà OR với nhau sẽ cho kết quả = 1, ngược lại sẽ =0. Lệnh ADDLW và ADDWF: ADD là một hàm cộng 2 số với nhau, nếu kết quả lớn hơn 8bit thì cờ CARRY sẽ được set lên 1 ngược lại nó =0. Cờ CARRY có địa chỉ byte 03h và nằm tại bit0. Một lần nữa con Pic cho ta 2 món chế biến từ hàm ADD, đó là ADDLW và ADDWF, bạn cũng có thể đoán rằng nó cũng tương tự như các hàm ở trên. Lệnh ADDLW cộng nội dung của thanh ghi W với một số xác định, cú pháp là: ADDLW Lệnh ADDWF cộng nội dung của thanh ghi W với một thanh ghi bất kỳ, kết quả lưu trong W, cú pháp là: ADDWF ,d là thanh ghi mà chúng ta chỉ định và d nói cho con Pic biết nơi lưu kết quả. Nếu d=0 kết quả lưu trong thnh ghi W, d=1 kết quả lưu trong thanh ghi ta chỉ định (tức là ). Lệnh SUBLW and SUBWF: Hàm SUB, tôi dám đánh cược bạn không thể đoán được hàm này làm cái gì ?!, thôi được rồi, xem như bạn đã đoán ra, hàm SUB này trừ 1bit với 1bit khác. Một lần nữa con Pic lại cho ta 2 món được chế biến từ hàm SUB, đó là SUBLW and SUBWF, cú pháp thì giống y như là những món của hàm ADD nhưng mà thay vì cộng thì nó trừ. Lệnh INCF và INCFSZ: Nếu chúng ta muốn cộng 1 với một số trong Pic, đơn giản ta sử dụng hàm ADD và số 1, cái bất tiện là đầu tiên ta phải bỏ con số 1 vào trong thanh ghi W, sau đó dùng lệnh ADDLW 1 để tăng nó lên 1. Nếu ta chỉ muốn cộng số 1 vào một thanh ghi bất kỳ thì còn tồi tệ hơn, đầu tiên phải đặt số 1 vào thanh ghi W, sau đó dùng lệnh ADDWF ,1. Ví dụ ta muốn cộng số 1 với nội dung của địa chỉ 0Ch, ta phải viết đoạn code sau: Movlw 01 addwf 0c,1 Có một cách tốt hơn cách này đó là dùng lệnh INCF trong con Pic, cú pháp là: INCF ,d
- Dson 16 Với là thanh ghi, hoặc địa chỉ mà ta chỉ định, còn d thì nói cho con Pic biết nơi đặt kết quả. Nếu d=0 thì kết quả lưu trong thanh ghi W, nếu d=1 kết quả sẽ được lưu trong thanh ghi chỉ định nằm trước nó (tức là ) Bằng cách này ta có thể tiết kiệm ½ bộ nhớ của Pic. Nếu ta muốn kết quả lưu trong W thì sử dụng ví dụ trên sau đó thêm một lệnh khác để MOV nội dung trong địa chỉ 0Ch trở vào trong thanh ghi W sau đó đặt vào thanh ghi 0Ch bất cứ cái gì. Có một lệnh increment khác, đó là INCFSZ, lệnh này sẽ tăng thanh ghi mà ta chỉ định lên 1, nhưng nếu thanh ghi này =0 sau khi thực thi lệnh ( xảy ra khi cộng 1 vào FFh) thì con Pic sẽ bỏ qua lệnh kế tiếp, đoạn code bên dưới sẽ mô tả lệnh này: Loop Incfsz 0C Goto Loop : : Rest of program. Trong đoạn code trên, địa chỉ 0Ch sẽ tăng lên 1 sau đó chương trình nói cho con Pic quay về nhãn Loop và gia tăng 0Ch lên lần nữa, nó làm tiếp tục như vậy cho tới khi 0Ch =127 (FFh). Lần này khi tăng lên 1, nội dung của 0Ch sẽ =0. Lệnh INCFSZ sẽ nói cho con Pic bíêt hãy bỏ qua lệnh kế tiếp, trong trường hợp ví dụ trên nó bỏ qua lệnh GOTO Loop để thực thi tiếp đoạn code còn lại. Lệnh DECFSZ: Lệnh DECFSZ đã bàn trong các ví dụ trước, bây giờ ta sẽ không nhắc lại nữa. Lệnh COMF: Lệnh cuối cùng trong nhóm này là lệnh COMF, nó đảo ngược (Compliment) tất cả các bit trong thanh ghi được chỉ định, cú pháp là: COMF ,d. Với là thanh ghi mà ta muốn đảo và d nói cho con Pic bíêt nơi lưu kết quả. Nếu d=0 kết quả lưu trong thanh ghi W, nếu d=1 thì kết quả lưu trong thanh ghi chỉ định nằm trước d ( tức là ). Xem mô tả sau đây: 0C = 11001100 COMF 0C,1 0C = 00110011 Cái này rất tiện lợi khi mà bạn muốn nhanh chóng bật các chân của Port từ Output trở thành Input hoặc ngược lại. Toán hạng trên Bit: Các toán hạng dùng cho Bit cho phép chúng ta thao tác trên các bit đơn lẽ trong byte, nó cho phép MOV, SET và CLEAR bit trong thanh ghi hoặc những địa chỉ được chỉ định, phần cuối của tutorial này ta sẽ trình bày một chương trình làm cho con Led sáng chạy theo nhiều cách khác nhau. Lệnh BCF: Trong các phần trước chúng ta đã xem một số lệnh thực thi trên bit, trong phần này ta sẽ xem một số lệnh còn lại tác động lên bit như thế nào. BCF là lệnh xoá 1 bit được chỉ định trong thanh ghi, cú pháp là:
- Dson 17 BCF , Chúng ta đã sử dụng lệnh này trong phần trước để thay đổi từ Bank1 sang Bank0 bằng cách xoá bit trong thanh ghi STATUS, chúng ta cũng có thể Clear 1 bit về 0 tại bất kỳ bit nào trong bất kỳ thanh ghi nào, ví dụ, nếu bạn muốn Clear bit thứ 3 trong thanh ghi 0Ch có nội dung = 11001101, bạn có thể làm như sau: BCF 0C,03 Lệnh BSF: Lệnh BSF ngược lại, nó có thể Set 1 bit lên 1 tại bất kỳ bit nào trong bất kỳ thanh ghi nào, ta đã dùng cái này trong phần trước để nhảy từ Bank0 sang Bank1, cú pháp là: BSF , Cách dùng BSF giống y như cách dùng BCF. Lệnh BTFSC: Chúng ta đã có thể Set bit và Clear bit trong thanh ghi, nhưng mà nếu bạn chỉ muốn thử xem bit nào đó trong thanh ghi là = 1 hay = 0 thì sao, rất đơn giản, hảy dùng lệnh BTFSC, nó được gọi là “Bit Test Register F and Skip If It Is Clear”, tạm dịch là “lệnh thử kiểm tra bit trong thanh ghi và bỏ qua lệnh kế nếu bit = 0”, quá rõ ràng rồi, không cần phải giải thích gì thêm nữa phải không ?!, ta sẽ dùng lệnh này để kiểm tra một cái cờ (flag) nào đó ví dụ như cờ Carry, nó tránh cho ta khỏi phải đọc thanh ghi STATUS để tìm xem trạng thái của từng bit như thế nào. Ví dụ, nếu bạn muốn thử bit cờ Carry =1 chưa sau khi bạn cộng 2 byte với nhau, bạn hãy thử làm cái này: BTFSC 03h,0 Nếu cờ Carry=1 thì chương trình thực thi tiếp lệnh đứng kế tiếp, nếu Carry=0 nó sẽ bỏ qua lệnh kế tiếp, xem đoạn code sau: Loop : : : BTFSC 03,0 Goto Loop Trong đoạn code trên, con Pic sẽ đi ra khỏi Loop nếu bit0 trong thanh ghi STATUS ( hay cờ Carry) bị xoá về 0, nói cách khác nếu cờ Carry=0 lệnh GOTO sẽ được thực hiện. Lệnh BTFSS: Lệnh này có nghĩa là “Bit Test Register F, And Skip If Set” tạm dịch là kiểm tra bit trong thanh ghi F và bỏ qua lệnh kế nếu=1. Nó giống như là lệnh BTFSC nhưng mà chỉ khác là con Pic sẽ bỏ qua lệnh kế tiếp nếu bit=1. Lệnh CLRF: Lệnh này sẽ Clear nội dung trong thanh ghi hiện hành về 0, cú pháp là: CLRF Chúng ta đã dùng lệnh này trước đây để Clear ngõ ra Output của Port về 0 bằng cách dùng câu lệnh: CLRF 05h lệnh CLRW: Lệnh này giống y như lệnh CLRF nhưng mà chỉ khác là nó chỉ Clear thanh ghi W, cú pháp thì hoàn toàn đơn giản: CLRW
- Dson 18 Lệnh RLF và RRF: Lệnh này sẽ dịch bit trong thanh ghi sang vị trí bên trái (RLF) hoặc bên phải (RRF) của thanh ghi đó, ví dụ bạn có 00000001 và bạn dùng lệnh RLF thì bạn sẽ nhận được 00000010. Bây giờ hãy xem cái gì sẽ xảy ra nếu bạn có 10000000 và tiếp tục thực thi lệnh RLF?, đừng có hốt hoảng, bit 1 của bạn sẽ đi sang cờ Carry, nếu bạn lại tiếp tục RLF thì bit 1 sẽ quay trở về vị trí 0 trong byte. Mọi thứ sẽ diễn ra đúng như vậy đối với lệnh RRF nhưng mà bit sẽ di chuyển theo chiều bên phải. Ví dụ bên dưới biểu diễn lệnh RLF, bạn có nhình thấy chữ C là ký hiệu của cờ Carry, các con số 7654321 là thứ tự từ cao xuống thấp của 8bit trong thanh ghi. C 76543210 0 00000001 RLF 0 00000010 RLF 0 00000100 RLF 0 00001000 RLF 0 00010000 RLF 0 00100000 RLF 0 01000000 RLF 0 10000000 RLF 1 00000000 RLF 0 00000001 Chương trình Test: Bây giờ bạn sẽ xem một ví dụ, nếu muốn bạn có thể compile và cho nó chạy thử. Chương trình này làm cho đèn chạy bắt đầu từ bit0 của PortA sang tới bit8 của PortB rồi quay về thực thi lại từ đầu. Bạn hãy kết nối các con Led vào chân Port rồi cho chạy chương trình, bạn sẽ nhìn thấy các bit hoạt động như những gì mà ta đã nói từ trước đến giờ. TIME EQU 9FH ; Variable for the delay loop. PORTB EQU 06H ; Port B address. TRISB EQU 86H ; Port B Tristate address. PORTA EQU 05H ; Port A address. TRISA EQU 85H ; Port A Tristate address. STATUS EQU 03H ; Page select register. COUNT1 EQU 0CH ; Loop register. COUNT2 EQU 0DH ; Loop register. BSF STATUS,5 ; Go to page 1 MOVLW 00H ; and set up MOVWF TRISB ; both Ports A and B MOVLW 00H ; to Output, MOVWF TRISA ; then return to
- Dson 19 BCF STATUS,5 ; page 0. MOVLW 00H ; Clear Port A. MOVWF PORTA ; ; Start of main program RUN MOVLW 01H ; Set the first bit MOVWF PORTB ; on Port B. CALL DELAY ; Wait a while CALL DELAY ; ; Move the bit on Port B left, then pause. RLF PORTB,1 CALL DELAY CALL DELAY RLF PORTB,1 CALL DELAY CALL DELAY RLF PORTB,1 CALL DELAY CALL DELAY RLF PORTB,1 CALL DELAY CALL DELAY RLF PORTB,1 CALL DELAY CALL DELAY RLF PORTB,1 CALL DELAY CALL DELAY RLF PORTB,1 CALL DELAY CALL DELAY RLF PORTB,1 ; This moves the bit into the carry flag ; Now move onto Port A, and move the bit left. RLF PORTA,1 ; This moves the bit from the zero flag into PortA CALL DELAY CALL DELAY RLF PORTA,1 CALL DELAY CALL DELAY RLF PORTA,1 CALL DELAY CALL DELAY RLF PORTA,1 CALL DELAY CALL DELAY ; Move the bit back on Port A RRF PORTA,1 CALL DELAY CALL DELAY
- Dson 20 RRF PORTA,1 CALL DELAY CALL DELAY RRF PORTA,1 CALL DELAY CALL DELAY RRF PORTA,1 ; This moves the bit into the zero flag ; Now move the bit back on Port B RRF PORTB,1 CALL DELAY CALL DELAY RRF PORTB,1 CALL DELAY CALL DELAY RRF PORTB,1 CALL DELAY CALL DELAY RRF PORTB,1 CALL DELAY CALL DELAY RRF PORTB,1 CALL DELAY CALL DELAY RRF PORTB,1 CALL DELAY CALL DELAY RRF PORTB,1 CALL DELAY CALL DELAY ; Now we are back where we started, ; GOTO RUN ; let's go again. ; Subroutine to give a delay between bit movements. DELAY MOVLW TIME ; Get the delay time, MOVWF COUNT1 ; and put it into a variable. LOOP1; DECFSZ COUNT1 ; Decrement 1 from the delay time until it GOTO LOOP1 ; reaches zero. MOVWF COUNT1 ; Get the delay time again, LOOP2 ; and repeat the count down. DECFSZ COUNT1 ; GOTO LOOP2 ; RETURN ; End of subroutine. END ;
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Sửa chữa điện thoại di động - Tài Liệu Dụng cụng
12 p |
614 |
359
-
Tài liệu đặc tả yêu cầu phần mềm
18 p |
890 |
245
-
Tài liệu ASM - PIC (P2)
17 p |
210 |
129
-
Tài liệu Lập trình hệ thống Chương 1
32 p |
166 |
85
-
Tài liệu Lập trình hệ thống Chương 4
41 p |
137 |
84
-
Giáo trình những vấn đề trong ngành viễn thông P1
16 p |
152 |
66
-
Tài liệu Lập trình hệ thống Chương 2
15 p |
110 |
54
-
Tài liệu Lập trình hệ thống Chương 5
15 p |
98 |
44
-
Tài liệu tập huấn hướng dẫn sinh hoạt chuyên môn theo hướng lấy học sinh làm trung tâm
37 p |
50 |
12
-
Quá trình ứng dụng vi mạch lập trình số trong bộ chuyển mạch BSC p1
10 p |
40 |
6
-
Quá trình hình thành giáo trình phân tích phương pháp nghiên cứu hệ thống truyền tải dữ liệu số trong hệ thống con chuyển mạch GSM p8
10 p |
38 |
5
-
Giáo trình phân tích tính ưu việt của vi mạch chuyển đổi trong kỹ thuật điều khiển và đo lường p1
8 p |
24 |
4
-
Tài liệu SVN tiếng Việt
41 p |
9 |
3
-
Giáo trình phân tích khả năng ứng dụng DSlam để tương thích với mạng di động p1
10 p |
28 |
3
-
Giáo trình phân tích khả năng xử lý các lệnh số học logic của bộ vi xử lý xung clock chuẩn p1
12 p |
24 |
3
-
Tài liệu sử dụng Tems
55 p |
18 |
3
-
Giáo trình phân tích các trạm lặp kế hoạch hai tần số cho kênh RF song công p1
10 p |
24 |
2

Set-Cookie: TLDEVNamespace=7k7csqhilic4oecjl2nn6m8l37; path=/; domain=.tailieu.vn; HttpOnly


markdown:
# Tạo bản Windows Vista PE chạy trên CDROM và USB
Chia sẻ: Nhan Hoang | Ngày: | Loại File: PDF | Số trang:10
lượt xem 24
download
![](http://image.tlvnimg.com/document/thumbnail/2009/20091109/nguyen2/80x100/tao_ban_windows_vista_pe_chay_tren_cdrom_va_usb_1276.jpg)
##
Tạo bản Windows Vista PE chạy trên CDROM và USB
[Vui lòng tải xuống để xem tài liệu đầy đủ](javascript:void(0);)
Download
![](images/down16x21.png)
Microsoft Windows Pre-installation Environment (Windows PE) 2.0 được Microsoft cung cấp kèm trên đĩa cài đặt Windows Vista và chỉ có phần nhân (kernel) của Windows Vista, với mục đích chính là tạo môi trường khởi động máy (thay thế môi trường DOS) trong chế độ đồ họa 32bit để tiến hành các công việc như cài đặt Windows Vista, sửa lỗi và phục hồi máy tính.
Bình luận(0)
[Đăng nhập để gửi bình luận!](javascript:void(0);)
##
Nội dung Text: Tạo bản Windows Vista PE chạy trên CDROM và USB
- Tạo bản Windows Vista PE chạy trên CDROM và USB Microsoft Windows Pre-installation Environment (Windows PE) 2.0 được Microsoft cung cấp kèm trên đĩa cài đặt Windows Vista và chỉ có phần nhân (kernel) của Windows Vista, với mục đích chính là tạo môi trường khởi động máy (thay thế môi trường DOS) trong chế độ đồ họa 32bit để tiến hành các công việc như cài đặt Windows Vista, sửa lỗi và phục hồi máy tính. Tuy nhiên, theo cấu hình mặc định Vista PE rất khó sử dụng vì sau khi khởi động chỉ có cửa sổ tương tự DOS để chạy vài chương trình dòng lịnh như: Bootsect, DiskPart, Drvload, Oscdimg, PEImg, Wpeinit, ImageX. Khi đóng cửa sổ này thì Windows PE sẽ tự động thoát. Màn hình Windows PE 2.0 sau khi khởi động Nếu muốn tìm hiểu Windows PE 2.0, bạn hãy tải bộ Windows Automated Installation Kit (WAIK) tại địa chỉ http://www.microsoft.com/downloads/details.aspx?FamilyID=c7d4bc6 d-15f3-4284-9123-679830d629f2&DisplayLang=en hay http://tinyurl.com/ykoo3x, sau đó dùng WinISO giải nén file vista_6000.16386.061101-2205-LRMAIK_EN.img rồi cài đặt MSXML 6.0 và Windows IAK.
- WAIK sẽ giúp bạn tự tạo phiên bản Windows Vista PE đơn giản có thể khởi động từ đĩa cứng/ CD/ DVD/ USB flash drive (UFD)/ Remote Installation Services (RIS) server. Để giúp Windows PE (PE 1.x với nhân của Windows XP/2003 và PE 2.0) dễ sử dụng hơn và tận dụng được ưu thế của môi trường này như giao diện người dùng đồ họa, hỗ trợ mạng, thiết bị Plug and Play, AT/NTFS/CDFS, có đầy đủ driver mới nhất của Windows Vista... Một số lập trình viên trên thế giới đã viết ra chương trình miễn phí tên WinBuilder có khả năng giúp mọi người tạo bộ Windows PE với giao diện Desktop tương tự Windows phiên bản đầy đủ và có thể bổ sung thêm ứng dụng tùy ý vào Windows PE. Bài viết này sẽ hướng dẫn các bạn dùng WinBuilder để tạo bản Vista PE trên đĩa CDROM và USB Flash driver. Yêu cầu cần có khi tạo Vista PE - Bộ cài đặt Windows Vista trên đĩa DVD hay đĩa cứng. - Bộ VistaPE mẫu (bao gồm WinBuilder 052) tải tại địa chỉ http://vistape.boot-land.net/vistape005_en.rar. - Các ứng dụng miễn phí dạng portable (chạy không cần cài đặt) tải tại các địa chỉ: http://www.portablefreeware.com/, http://en.wikipedia.org/wiki/List_of_Portable_Software, http://nedwolf.com/Freeware-Portable.htm, http://portableapps.com/apps. Các bước thực hiện 1. Giải nén file vistape005_en.rar để được thư mục Vistape có 2 thư mục con Projects, Tools và 2 file WinBuilder.exe, WinBuilder.ini. 2. Chép bản Total Commander Portable vào thư mục Vistape\Projects\VistaPE\App\File Tools\TC\. 3. Dùng Notepad mở file Vistape\Projects\VistaPE\App\System\wul.script, tìm 2 dòng có đoạn ký tự %LinkDir%\Pserv2.exe, sửa thành %LinkDir%\wul.exe (lỗi sai
- tên file). 4. Dùng Notepad mở file Vistape\Projects\VistaPE\App\System\BSExplorer\bs_start.ini (nội dung là các dòng lịnh tạo menu Start), tìm 6 dòng có đoạn ký tự \system32\system32\ sửa thành \system32\ (lỗi dư chữ \system32 trong file gốc). 5. Chạy file Vistape\WinBuilder.exe. - Trong bảng Script, bạn phải đánh dấu chọn các mục: Make directories, Copy files, Strip, Shell & Config, Fedora Inverse Cursors, Common DLL, WSH Support, BS Explorer, Pserv, PENetCfg, Finalizing > Chọn thêm mục RAMDisk và Create ISO nếu muốn tạo Vista PE trên đĩa CD (bỏ chọn khi tạo trên USB Flash drive) > Nếu muốn chạy các ứng dụng trong Vista PE thì có thể chọn thêm Total Commander Plus, Advanced PCI Info Utility, sala's Password Renew, XP Key Readers > Trong mục Total Commander Plus, bạn đánh dấu chọn mục Run from ram nếu muốn chép toàn bộ thư mục TC vào RAM mỗi khi chạy Vista PE > Trong mục Finalizing, bạn có thể chọn Pack Program.wim nếu muốn nạp toàn bộ ứng dụng vào RAM (đòi hỏi bạn phải chọn mục RAMDisk và VistaPE Wim Mount Plugin). - Trong bảng Paths, bạn chỉ định đường dẫn đến bộ cài đặt Windows Vista để WinBuilder sao chép các file nguồn. - Bấm nút Run để tiến hành tạo bộ nguồn Vista PE trong thư mục Vistape\Target\ và file Vistape\ISO\vista.iso. Nếu bạn không chọn
- mục Pack Program.wim thì trong thư mục Vistape\Target\ sẽ có thư mục Programs chứa tất cả thư mục của các ứng dụng đã chọn. Nếu bạn chọn mục Pack Program.wim thì trong thư mục Vistape\Target\ sẽ có file Program.wim thay cho thư mục Programs. 6. Bạn dùng chương trình ghi đĩa để ghi file vista.iso lên CD và có thể khởi động bằng đĩa này. Màn hình của bản Vista PE tạo bằng WinBuilder 7. Làm cho USB Flash drive có thể khởi động theo định dạng boot của Vista (khác với các hệ điều hành trước) bằng chương trình Diskpart (của Windows Vista) để phân vùng và định dạng ổ đĩa USB như sau: - Chạy Windows Vista hay Windows PE 2.0 > trong cửa sổ dòng lịnh (CMD), bạn lần lượt gõ các dòng lịnh: diskpart list disk select disk 1 clean create partition primary size= select partition 1 active format fs=fat32 assign exit Chú ý: Disk 1 là ổ USB trong thí dụ này khi xem bằng lịnh “list disk”. Nếu chỉ chia 1 phân vùng thì bỏ thông số “size=” trong dòng lịnh.
- 8. Chép tất cả file và thư mục con trong Vistape\Target\ lên USB Flash drive (bao gồm 3 thư mục: Boot, Programs, Sources và 2 file Bootmgr, Vistape.cd). Chú ý: Nếu bạn chạy Vista PE trên USB thì trong WinBuilder đừng chọn Run from ram và Pack Program.wim để tiết kiệm bộ nhớ. 9. Chép các chương trình Portable vào ổ USB để chạy sau khi khởi động. Trong bài sau, chúng tôi sẽ hướng dẫn bạn cách tùy biến Vista PE theo ý mình như: thay đổi menu Start, bổ sung ứng dụng vào menu Start, đóng gói ứng dụng để đưa vào USB... Việc sử dụng Windows PE 2.0 không vi phạm bản quyền của Microsoft nhưng nó có những hạn chế sau: - Máy tính chạy Windows PE phải có tối thiểu 256MB RAM. - Không thể truy cập máy chạy Windows PE từ máy tính khác trong mạng. - Chỉ hỗ trợ giao thức TCP/IP. – Không hỗ trợ .NET Framework. – Tự khởi động lại sau 72 giờ chạy liên tục (PE 1.x là 24 giờ). – Không hỗ trợ Wireless 802.1x. – Chỉ có phần nhân mà không có các ứng dụng cơ bản của Windows. Tùy biến giao diện và bổ sung ứng dụng vào Windows Vista PE Bài viết trên e-CHÍP 319 tuần trước đã hướng dẫn bạn dùng chương
- trình WinBuilder tạo gói phần mềm Vista PE đơn giản để chạy trên CDROM và USB Flash drive. Bài này sẽ hướng dẫn các bạn cách tùy biến giao diện và bổ sung ứng dụng vào Vista PE. Nguyên lý làm việc của WinBuilder Cửa sổ WinBuilder là lớp vỏ giao tiếp với người dùng, giúp người dùng nhanh chóng chọn lựa và xác lập thông số cho các ứng dụng cần đóng gói chung với phần nhân của Windows Vista để tạo thành gói phần mềm Vista PE hoàn chỉnh. Phần linh hồn của WinBuilder, quyết định việc WinBuilder phải làm gì chính là những file text có tên mở rộng .script và chủ yếu chúng ta sẽ làm việc với các file này. Khi bạn tải file vistape005_en.rar về giải nén sẽ được thư mục Vistape có 2 thư mục con Projects, Tools và 2 file WinBuilder.exe, WinBuilder.ini. Mở thư mục Projects\VistaPE\ sẽ có các thư mục quan trọng như sau: - App: Nơi tập trung các ứng dụng, mỗi thư mục con có thể chứa 1 ứng dụng hay nhiều thư mục của các ứng dụng cùng loại cho dễ quản lý. Mỗi ứng dụng sẽ có 1 file script chỉ định cho WinBuilder cách đóng gói ứng dụng này và cách bổ sung shortcut của ứng dụng vào menu Start, Desktop hay Quick Launch của Vista PE. Trong thư mục này còn có thư mục System/BSExplorer, lưu ứng dụng được dùng là giao diện mặc định (Shell) của Vista PE. Chúng ta sẽ làm việc với các file .ini trong thư mục BSExplorer để tùy biến desktop và menu Start. - Build: Gồm thư mục System32 và các file script quy định tiến trình đóng gói của WinBuilder. - Raznoe: Gồm 2 thư mục Cursors và Dll và 2 file script quy định việc đóng gói các file dll bổ sung cũng như đăng ký thông số vào Registry của Vista PE. Chú ý: Chúng ta sửa nội dung các file script, ini, inf bằng Notepad của Windows. Xác lập giao diện cơ bản Do trong bộ Vista PE dùng BSExplorer làm shell nên file Vistape\Projects\VistaPE\App\System\BSExplorer\bs_start.ini sẽ xác định các mục cơ bản trong menu Start. File bs_desktop.ini xác lập biểu tượng xuất hiện trên desktop. File bs_qlaunch.ini xác lập biểu tượng xuất hiện trong thanh công cụ Quick Launch. File bs_explorer.ini quy định cách hiển thị của desktop (màu nền, dòng thông báo bản quyền, icon, thanh công cụ...). Bạn tham khảo file có
- sẵn để biết cách viết lệnh và có thể dùng WinBuilder thêm các mục mới vào các file ini này khi đóng gói, thông qua các file script của ứng dụng bổ sung. Bổ sung ứng dụng vào Vista PE Bạn có thể bổ sung ứng dụng vào Vista PE bằng cách đơn giản là chép các phần mềm dạng portable vào đĩa Vista PE rồi chạy chúng sau khi khởi động Vista PE giống như chạy trong Windows bình thường. Tuy nhiên, bạn cần chú ý là do Vista PE không có đầy đủ các file thư viện động (DLL) như Windows thường nên bạn cần bổ sung các file này vào Vista PE vì nếu thiếu thì vài ứng dụng portable không chạy được. Cách chuyên nghiệp hơn là dùng Winbuilder đóng gói các phần mềm dạng portable vào Vista PE và tạo shortcut cho chúng trong menu Start, trong desktop hay Quick Launch như sau: 1. Chép các phần mềm portable vào thư mục Vistape\Projects\VistaPE\App\, mỗi phần mềm nên có 1 thư mục con. Thí dụ: D:\winpe\vistape\Projects\VistaPE\App\Office\UniKey4\ là thư mục cho chương trình Unikey 2. Trong thư mục D:\winpe\vistape\Projects\VistaPE\App\Office\, bạn tạo file Unikey.script với nội dung tương tự như các file script của ứng dụng sẵn có. Thí dụ dưới đây chỉ nêu ra những dòng mã cần thay đổi cho phù hợp với từng ứng dụng: [Main] Title=UniKey v4 (tên hiển thị trong danh sách chọn thành phần đóng gói của WinBuilder) Description= (dòng ghi chú sẽ xuất hiện khi chọn ứng dụng trong danh sách) Selected=True (True: chọn mặc định trong danh sách liệt kê, False: không chọn) [Process] Echo,Processing UniKey... SET,"%DestDir%","Programs\UniKey4" (ghi chính xác tên thư mục của ứng dụng) SET,"%LinkDir%","y:\UniKey4" DirCopy,"%ScriptDir%\UniKey4\*.*","%VistaTemp%\%DestDir%" [BSLinks] (1. Tạo biểu tượng để kích hoạt chương trình trên Desktop, có thể
- xóa nếu không cần) TXTAddLine,%BSD%,"","Append" TXTAddLine,%BSD%," ItemX=80","Append" (vị trí theo chiều dọc tính từ cạnh trên) TXTAddLine,%BSD%," ItemY=80","Append" (vị trí theo chiều ngang tính từ cạnh trái) TXTAddLine,%BSD%," Caption=UniKey","Append" (tên hiển thị bên dưới biểu tượng) TXTAddLine,%BSD%," ExeName=%LinkDir%\UniKey.exe","Append" (ghi chính xác tên file chạy) TXTAddLine,%BSD%," IconName=%LinkDir%\UniKey.exe","Append" TXTAddLine,%BSD%," ExeDir=%LinkDir%","Append" TXTAddLine,%BSD%," CmdParam=","Append" (thông số của chương trình, nếu có) TXTAddLine,%BSD%," ShowState=NORMAL","Append" TXTAddLine,%BSD%,"","Append" (2. Tạo biểu tượng để kích hoạt chương trình trong thanh Quick Launch, có thể xóa) Giống như đoạn mã 1 nhưng đổi biến %BSD% thành %BSQ% và bỏ 2 dòng ItemX, ItemY (3. Tạo biểu tượng để kích hoạt chương trình trong nhóm Office tools của menu Start) Giống như đoạn mã 2 nhưng đổi biến %BSQ% thành %BSS% và thêm 3 dòng dưới đây TXTAddLine,%BSS%," ShowInAutorun=YES","Append" TXTAddLine,%BSS%," EnableInAutorun=YES","Append" TXTAddLine,%BSS%," ParentItem=Office","Append" (ghi chính xác MenuID của nhóm chương trình) Chú ý: - Các từ trong 2 dấu () là chú thích, không được ghi vào nội dung. - Biến %BSD% trong đoạn code tạo biểu tượng trên desktop chưa được quy định trong bộ WinBuilder gốc, bạn phải mở file Vistape\Projects\VistaPE\script.project > thêm vào phần [Variables] dòng %BSD%="%VistaTemp%\Program Files\BSExplorer\bs_desktop.ini". - Bạn tham khảo file Vistape\Projects\VistaPE\App\File Tools\totalcmd.script để biết cách tạo tùy chọn chạy ứng dụng trong RAM hay chạy trên đĩa. 3. Chạy Winbuilder, bạn sẽ thấy trong danh sách đóng gói có tên và
- chú thích của ứng dụng mới bổ sung. Bổ sung file thư viện động (DLL) vào Vista PE - Để bổ sung các file thư viện động (DLL) cần thiết cho các chương trình portable, bạn hãy chép chúng (bạn nên chép các file avifil32.dll, ddraw.dll, glu32.dll, msacm32.dll, Mscomctl.ocx, msvfw32.dll, oledlg.dll, opengl32.dll từ thư mục System32 của Windows XP) vào thư mục Vistape\Projects\VistaPE\Raznoe\dll\. - Bạn mở file Vistape\Projects\VistaPE\Raznoe\dll.script xóa 2 dòng FileCopy,"%IWTemp%\Windows\System32\oledlg.dll","%VistaTemp %\Windows\System32", FileCopy,"%IWTemp%\Windows\System32\en- us\oledlg.dll.mui","%VistaTemp%\Windows\System32\en-us" (2 dòng này chỉ dùng cho bản XP PE). Màn hình Vista PE sau khi bổ sung ứng dụng Unikey Các địa chỉ cần biết
- - Tải Vista PE và ứng dụng bổ sung BS explorer 1.6 (http://www.kursknet.ru/~boa/winpe/plugin/bsexplorer.zip). Bản Vista PE + ứng dụng hỗ trợ tiếng Anh và Nga (http://vistape.boot- land.net/files/vistape005_free.rar). Bản Vista PE có ít ứng dụng (http://vistape.boot-land.net/files/vistape005_en.rar). Ngoài ra, bạn có thể tải các bản XP PE về để tách lấy những ứng dụng bổ sung vào Vista PE theo hướng dẫn trong bài này: PEBuilder (http://www.nu2.nu/download.php?sFile=pebuilder3110a.zip). UBCD for Win (http://www.ubcd4win.com/downloads.htm). Sherpya Windows PE (http://sourceforge.net/project/showfiles.php?group_id=126922). - Website, Forum tham khảo thông tin về Vista PE http://www.kursknet.ru/~boa/en/index.html; http://bink.nu/forums/31/ShowForum.aspx; http://www.boot- land.net/forums/VistaPE-f51.html; http://vistape.boot-land.net/eng/.
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Cài đặt và chạy Windows XP trực tiếp trên ổ đĩa cứng USB
2 p |
309 |
66
-
Tạo tập tin ghost cho Windows XP để chạy trên nhiều máy
23 p |
150 |
53
-
chạy Windows XP trực tiếp trên đĩa CDROM
3 p |
131 |
19
-
Cài đặt một SSH Server trong Windows Vista
9 p |
148 |
18
-
Window Vista SP2 2009 update! Bản x86 dành cho hệ 32 bit
7 p |
105 |
15
-
Tạo hình nền cho ổ đĩa trong VISTA
2 p |
94 |
13
-
Tạo XP Mode cho Windows 7 phiên bản Home và Windows Vista – phần 1
3 p |
144 |
11
-
Các giao diện người dùng của Windows Vista
10 p |
96 |
11
-
Khắc phục lỗi lưu tệp tin trên ổ cứng Windows Vista
1 p |
88 |
10
-
Tạo bản backup Windows Vista trên máy bàn
10 p |
90 |
9
-
Danh sách lệnh để tạo Shortcut đặc biệt trong Windows Vista
4 p |
139 |
9
-
Tạm biệt bàn phím & chuột trong Windows Vista
6 p |
67 |
8
-
Nên dùng phiên bản Windows 7 nào?
4 p |
68 |
8
-
Các phiên bản Windows Vista
7 p |
66 |
7
-
Windows Dream Scene chạy trên mọi bản Vista
1 p |
65 |
4
-
Windows 7 chạy trên Pentium II: sao lại không?
5 p |
29 |
3
-
Cách chạy dòng lệnh như một quản trị viên trên Windows Vista
5 p |
30 |
3

WARC-Type: response

Content-Type: application/http; msgtype=response

Set-Cookie: TLDEVNamespace=a6u610o1jkp0ufdigpsjugnh87; path=/; domain=.tailieu.vn; HttpOnly

Connection: close

Server: Apache/2.2.31 (CentOS)

Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0

Pragma: no-cache

Vary: Accept-Encoding

Content-Type: text/html; charset=UTF-8


markdown:
# Agricultural markets
**Agricultural markets**
-
The process of determining the needs and wants of consumers & being able to satisfy those needs & wants. Marketing includes all of the activities necessary to move a product from the producer to the consumer, refer to the lecture content lesson "Agricultural Marketing" to better understand this problem.
46p
longphdtailieu
26-02-2016
10
2
Download
-
Lesson "Economics of Agricultural - Markets: Ronald Shrimper" The primary purpose of this course is to help students develop analytical tools for thinking about the overall business environment in which they operate in some fashion for the rest of their lives. Even if students do not intend to make their livelihood from the sale of agricultural or food products, they will definitely be spending some of their income in these markets.
75p
longphdtailieu
27-02-2016
9
2
Download
-
Tham khảo sách 'agricultural marketing companies as sources of smallholder credit in eastern and southern africa', tài chính - ngân hàng, ngân hàng - tín dụng phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
0p
enterroi
01-02-2013
20
4
Download
-
This is the second occasion that the Agricultural Outlook report has been prepared jointly by the Organisation for Economic Co-operation and Development (OECD) and the Food and Agriculture Organization (FAO) of the United Nations. The report draws on the commodity, policy and country expertise of both Organisations in providing a medium term assessment of future prospects in the major world agricultural commodity markets. The report is published annually, as part of a continuing effort to promote informed discussion of emerging market and policy issues....
211p
tom_123
14-11-2012
26
1
Download
-
A financial market is a market in which people and entities can trade financial securities, commodities, and other fungible items of value at low transaction costsand at prices that reflect supply and demand. Securities include stocks and bonds, and commodities include precious metals or agricultural goods.
266p
vigro23
24-08-2012
77
28
Download
-
This paper examines the incentives and disincentives for the adoption of Good Agricultural Practices (GAPs) by farmers and by downstream handlers of farm outputs in developing countries. GAPs cover a diverse set of objectives and have been developed by a wide array of interest groups from private supply chain-driven systems tied to individual retailers, and industry-wide systems driven by retailer or producer associations, to programmes developed within national policy frameworks or promoted by international agencies....
46p
nguyenngocsonctu
04-12-2010
49
9
Download
-
[Báo cáo nghiên cứu nông nghiệp " Improvement of export and domestic markets for Vietnamese fruit through improved post-harvest and supply chain management "](http://tailieu.vn/doc/bao-cao-nghien-cuu-nong-nghiep-improvement-of-export-and-domestic-markets-for-vietnamese-fruit-thr-1138271.html)
The fruit industry in Vietnam has a great potential and plays an important role in agricultural production. In 2003, Vietnam exported US$43 million of high value fruit to high-income countries and imported US$14 million of fruit and vegetables. Vietnam is experiencing difficulties in competing with other Asian nations in export markets and its own domestic market, especially with China and Thailand. This suggests that Vietnam’s horticultural industries require substantial development to be globally competitive. Vietnamese consumers are demanding safer and higher quality fruit.
61p
tam_xuan
02-03-2012
26
8
Download
-
[Báo cáo nghiên cứu nông nghiệp " Extending export opportunities to small-plot dragon fruit growers through Good Agricultural Practices " Milestone 2](http://tailieu.vn/doc/bao-cao-nghien-cuu-nong-nghiep-extending-export-opportunities-to-small-plot-dragon-fruit-growers-t-1141389.html)
Producers of dragon fruit in Vietnam have seen prices for their fruit decline by about 60% since 2000 which can be attributed, in part, to their dependence on local and nearby exports. There are about 10 major exporters in Vietnam but a significant portion of the total production is sourced from many small-holder growers. During the previous dragon fruit GAP project 037/04VIE, growers were evaluated through a benchmarking study to determine the status of the dragon fruit producers against the standards required by high value export markets....
33p
xinh_la
05-03-2012
27
6
Download
-
By 2050, Chinese and global agriculture are expected to enter a new era of development. Global population increase and economic development, particularly in developing countries, will lead to greater human demand for food and fiber. The demand for multifunctional agriculture will also increase as the worsening global energy crisis induces the rise of the biomass energy industry. Demand growth, diversification and market expansion provide unlimited reverie for the future development of agriculture.
0p
tom_123
14-11-2012
24
4
Download
-
Ian and Jane Campbell of Barambah Organics near Murgon in Queensland produce, process and market certified organic milk. Their movement into organic production was born from a long family interest in sustainable agriculture and the need to create a point of difference for their products. “Customers are often surprised by the unique taste of our milk. It comes from a balanced and healthy diet for the cows on our chemical-free broadacre pastures,” said Ian. Soil health and weed control are important considerations and are carefully managed with compost manures and lime.
10p
cao_can
02-01-2013
25
4
Download
-
The financial sectors in South Asia Region (SAR) are dominated by commercial banks, which account for the vast majority of the financial system s assets. The domestic debt markets including the government bond and corporate bond markets are at an early stage of development and there are few institutional investors. In recent years, countries in SAR have attempted to develop local debt markets, although the pace of development remains uneven and slow due to many regulatory and institutional impediments....
226p
anhnangmuahe2013
05-03-2013
22
4
Download
-
This work includes such matters as: (1) analyzing and reporting on foreign markets (current and potential) for specific commodities produced and exported or imported by the United States; (2) conducting surveys in foreign areas of the actual and potential international supply and demand situation; (3) advising U.S. producers, exporters and Government authorities on foreign market prospects and programs and on actions which may affect adjustment of U. S.
27p
nhacchovina
22-03-2013
26
4
Download
-
[Báo cáo nghiên cứu nông nghiệp " Marketing and Policy Analysis in the Post-Harvest and Resource Sectors of Vietnam "](http://tailieu.vn/doc/bao-cao-nghien-cuu-nong-nghiep-marketing-and-policy-analysis-in-the-post-harvest-and-resource-sect-1138254.html)
The proposal provides for short course training in marketing and policy analysis related to the post harvest sector and the resource sectors. Paralleling the short courses will be a number of mini research projects in these areas that will be designed to develop analytical skills of academic staff in the participating institutions.
19p
tam_xuan
02-03-2012
27
3
Download
-
[Báo cáo nghiên cứu: Improvement of export and domestic markets for Vietnamese fruit through improved post-harvest and supply chain management](http://tailieu.vn/doc/bao-cao-nghien-cuu-improvement-of-export-and-domestic-markets-for-vietnamese-fruit-through-improved-1138298.html)
Improve the potential of the horticultural industries–export & domestic marketing•Work with established supply chains (a pomelo and a mango supply chain)•Demonstrate the processes of strategic plan development and implementation to the selected supply chains •Assist in implementing the strategic plan •Evaluate performance
51p
tam_xuan
02-03-2012
18
3
Download
-
Organic is the one of the fastest growing agricultural markets due to consumer’s increased concern about their own health, the environment, and the reported crises and emergencies worldwide on food safety and environmental issues in recent decades. It has now became an alternative for an increasing number of consumers that are worried about the presence of chemicals residues and the negatives consequences on the environmental caused by chemical intensive production methods.
6p
cao_can
02-01-2013
28
3
Download
-
The U.S. food and agricultural sector is undergoing rapid change in production, distribution, and consumption of food and fiber, and in technology. There have been dramatic increases in production and marketing coordination, market contracting, concentration of agricultural output by fewer and fewer operations, and consolidation of agricultural operations. These increases are manifested in significant long- and short-term changes in farm size, number, distribution, and location.
158p
mnemosyne75
02-02-2013
22
3
Download
-
[Báo cáo nghiên cứu nông nghiệp " Postharvest Education in Vietnam: Improving Safety and Quality Standards of Fresh Horticultural Products for Domestic and Export Markets "](http://tailieu.vn/doc/bao-cao-nghien-cuu-nong-nghiep-postharvest-education-in-vietnam-improving-safety-and-quality-stan-1138247.html)
Fresh fruit and vegetables have become a major part of Vietnam’s crop production, and have the potential to provide major export revenue. To enable Vietnam to exploit these markets and meet the stringent quality standards required, much greater attention needs to be placed on better postharvest handling, safety and packaging of fresh produce.
12p
tam_xuan
02-03-2012
9
2
Download
-
[Báo cáo khoa học nông nghiệp: Improvement of export and domestic markets for Vietnamese fruit through improved post-harvest and supply chain management](http://tailieu.vn/doc/bao-cao-khoa-hoc-nong-nghiep-improvement-of-export-and-domestic-markets-for-vietnamese-fruit-throug-1138299.html)
How will you benefit from being involved? •A better understanding of how you can improve your business–more reliable quality –better access to higher value markets•Working together and analysing existing challenges and future threats will develop a stronger and more reliable position in the market–domestic or export
44p
tam_xuan
02-03-2012
19
2
Download
-
We focus on the impact of two main policy changes: first, the increase in the rice export quota and the significant increase in the price of rice, especially in the south; second, liberalization of the fertilizer market and the sharp drop in the price of fertilizer. To this end, we document changes in the empirically observable “institutional environment,” exploring changes in rice and other crop prices as well as fertilizer prices.
56p
chuotchuot09
03-12-2015
8
2
Download
-
[The market of planting production forest products in the northern mountainous provinces and development policies](http://tailieu.vn/doc/the-market-of-planting-production-forest-products-in-the-northern-mountainous-provinces-and-developm-1800250.html)
The Ministry of Agriculture and Rural Development has entrusted the Vietnam Forestry Science Institute with research into and development of “Effective and sustainable planting of production forests in the Northern mountainous region”. This paper provides some initial results from surveys on the marketing of products from such forests in the Northern mountainous provinces.
8p
thaodien102
16-11-2015
11
1
Download

Set-Cookie: TLDEVNamespace=b0embgum2njlsq533pmtfu9gn3; path=/; domain=.tailieu.vn; HttpOnly


markdown:
Tài liệu thường tải cùng
- Giấy xác nhận thực tập của sinh viên về thời gian thực tập thực hành theo đúng quy định của bộ giáo dục, của trường chủ quản sinh viên. Biểu mẫu dưới đây được trình bày rất rõ ràng các bạn có thể tham khảo và hoàn thiện giấy xác nhận thực tập sinh viên của mình.
[Giấy xác nhận thực tập](/giay-xac-nhan-thuc-tap-328754) *05/01/2016* *pthung* *451* *60*
- Taingon.net đã tiếp tục và sưu tầm và gửi đến quý độc giả mẫu giấy xác nhận thực tập tốt nghiệp dành cho sinh viên cuối khóa của các trường Đại học, cao đẳng, trung cấp trong cả nước. Công ty hoặc cơ quan nơi bạn thực tập sẽ trực tiếp đánh giá vào giấy xác nhận thực tập tốt nghiệp khả năng hoàn thành công việc, ý thức, thái độ làm việc cũng như những kỹ năng, sự sáng tạo của bạn trong suốt kỳ thực tập và ký xác nhận. Nhà trường sẽ dựa trên những nhận xét của cơ quan bạn thực tập để cân nhắc và chấm tổng điểm thực tập cho từng sinh viên.
[Giấy xác nhận thực tập tốt nghiệp](/giay-xac-nhan-thuc-tap-tot-nghiep-1160258) *27/12/2016* *0* *0*
- Giấy xác nhận công tác là mẫu giấy xác nhận dùng để xác nhận công tác của đối tượng trực tiếp tham gia quá trình công tác của đối tượng tham gia chiến đấu bảo vệ tổ quốc, làm nhiệm vụ và được hưởn những chế độ của bảo hiểm xã hội.
[Giấy xác nhận công tác](/giay-xac-nhan-cong-tac-524716) *19/11/2016* *cogiaovungcao* *989* *64*
- Mẫu giấy xác nhận về thực trạng nhà ở là một trong những văn bản hành chính quan trọng để làm thủ tục vay vốn ngân hàng mua nhà ở xã hội. Nếu nắm rõ cách làm và kê khai các thông tin trong mẫu giấy xác nhận về thực trạng nhà ở thì việc làm thủ tục sẽ nhanh chóng và đơn giản hơn. Do đó, Taingon.net đã cung cấp mẫu giấy xác nhận chuẩn xác về hình thức và đầy đủ về nội dung để độc giả tải về máy và sử dụng trong những trường hợp cần thiết.
[Mẫu giấy xác nhận về thực trạng nhà ở](/mau-giay-xac-nhan-ve-thuc-trang-nha-o-831375) *14/11/2016* *iphone5* *5* *2*
- Nhận thức được tầm quan trọng của công tác kế toán bán hàng vận dụnglý luận đã được học tập tại trường kết hợp với thực tế thu nhận được từ côngtác kế toán tại công ty cổ phần Ngọc Anh, em đã chọn đề tài ''Kế toán bánhàng và xác định kết quả bán hàng'' để nghiên cứu và viết chuyên đề củamình.
[Báo cáo thực tập: Kế toán bán hàng và xác định kết quả bán hàng tại Công ty cổ phần Ngọc Anh](/bao-cao-thuc-tap-ke-toan-ban-hang-va-xac-dinh-ket-qua-ban-hang-528985) *30/11/2016* *pvhungv* *2,349* *1,112*
- Tài liệu báo cáo thực tập tốt nghiệp ô tô tại công ty TNHH TM & DV Nam Bình được nghiên sinh viên tiến hành một cách chi tiết, có sự đầu tư về mặt kiến thức và thời gian. Nếu bạn đang tìm một mẫu báo cáo thực tập hoàn chỉnh để phục vụ cho chuyên ngành của mình thì đây là tài liệu phù hợp nhất. Như chúng ta đã biết, chuyên ngành sửa chữa ô tô hiện nay được rất nhiều người theo học và mang tính ứng dụng cao. Xã hội ngày càng phát triển, những ngành dịch vụ càng có nhu cầu lớn trong đó ngành sữa chữa ô tô là một điển hình. Tham khảo tài liệu dưới đây để hiểu rõ hơn về lĩnh vực này.
[Báo cáo thực tập tốt nghiệp ô tô tại công ty TNHH TM & DV Nam Bình](/bao-cao-thuc-tap-tot-nghiep-o-to-tai-cong-ty-tnhh-tm-dv-nam-binh-540128) *11/11/2016* *hoanglan* *1,516* *429*
- Giấy xác nhận thời gian thực tế làm tài chính kế toán là biểu mẫu đề nghị công ty, cơ quan hay doanh nghiệp mà cá nhân đang công tác xác nhận về thời gian thực tế làm tài chính kế toán, kiểm toán của cá nhân tại đơn vị đó. Trong mẫu giấy xác nhận cần ghi chính xác các thông tin về tên cơ quan công tác, thông tin cá nhân của người được xác nhận, thời gian làm việc tại công ty, chức danh, bộ phận và số tháng thực tế đã làm.
[Giấy xác nhận thời gian thực tế làm tài chính kế toán](/giay-xac-nhan-thoi-gian-thuc-te-lam-tai-chinh-ke-toan-828512) *14/11/2016* *sapho* *26* *1*
- Taingon.net xin giới thiệu đến các bạn mẫu giấy xác nhận đang đi học được cập nhật mới nhất hiện nay. Theo đó, trong văn bản này học sinh, sinh viên cần nêu rõ thông tin cá nhân của mình bao gồm họ tên, ngày sinh, đang học tại trường nào, lớp nào. Phần cuối cùng trong mẫu giấy xác nhận là mong muốn của cá nhân được ban giám đốc trường xác nhận là sinh viên đang theo học tại trường. Một điểm đặc biệt lưu ý là văn bản chỉ có hiệu lực khi có chữ ký và đóng dấu của giám đốc, phóng giám đốc hoặc hiệu trưởng, hiệu phó trường.
[Mẫu giấy xác nhận đang đi học, giấy xác nhận sinh viên đang học tại trường](/mau-giay-xac-nhan-dang-di-hoc-519357) *08/11/2016* *thuhuong* *124* *20*
- Mẫu giấy xác nhận công tác là việc trình bày quá trình làm việc công tác của cá nhân tổ chức cơ quan đơn vị, doanh nghiệp trình lên cấp trên, trình bày rõ ràng minh bạch dễ dàng áp dụng vào mọi đối tượng hay lĩnh vực cụ thể. Mời các bạn đọc giả cùng tham khảo những thông tin mà chúng tôi cung cấp ngay sau đây :
[Mẫu giấy xác nhận công tác](/mau-giay-xac-nhan-cong-tac-240998) *05/01/2016* *nguyenthithanh* *472* *111*
- Giấy xác nhận nợ, biên bản xác nhận nợ cá nhân, nợ vay 2016 được sử dụng khi cá nhân vay nợ các công ty, tổ chức hoặc diễn ra giao dịch cung ứng hoặc mua bán hàng hóa giữa các doanh nghiệp. Mẫu biên bản xác nhận nợ cá nhân, nợ vay 2016 có thể đánh máy hoặc viết tay tùy theo thỏa thuận của hai bên liên quan. Đặc biệt, khi viết mẫu giấy xác nhận nợ thì người viết cần phải ghi rõ ràng khoản tiền nợ cả bằng số và bằng chữ một cách minh bạch để tránh trường hợp tranh chấp hoặc xảy ra rắc rối sau này.
[Giấy xác nhận nợ, biên bản xác nhận nợ cá nhân, nợ vay 2016](/giay-xac-nhan-no-1160257) *18/11/2016* *0* *0*

Content-Type: text/html; charset=utf-8


markdown:
![ Ảnh minh họa. Nguồn: Internet](http://static.tapchitaichinh.vn/660x450/Uploaded/hongvan/2016_12_13/cai-cach_YVUF.jpg)
**Các chỉ tiêu phát triển kinh tế - xã hội **
Theo Nghị quyết 23/2016/QH14, mục tiêu phát triển kinh tế - xã hội năm 2017 là bảo đảm ổn định kinh tế vĩ mô, tạo chuyển biến rõ trong thực hiện ba đột phá chiến lược; cơ cấu lại nền kinh tế gắn với đổi mới mô hình tăng trưởng, nâng cao năng suất, chất lượng, hiệu quả và sức cạnh tranh; khuyến khích khởi nghiệp, phát triển doanh nghiệp, thúc đẩy tăng trưởng bền vững. Nâng cao tính tự chủ của nền kinh tế. Bảo đảm an sinh xã hội và chăm lo đời sống nhân dân. Phát triển văn hóa, giáo dục, thực hiện dân chủ và tiến bộ, công bằng xã hội...
Các chỉ tiêu chủ yếu phát triển kinh tế - xã hội năm 2017 gồm: Tổng sản phẩm trong nước (GDP) tăng khoảng 6,7%; Tổng kim ngạch xuất khẩu tăng 6 - 7%; Tỷ lệ nhập siêu so với tổng kim ngạch xuất khẩu khoảng 3,5%; Tốc độ tăng giá tiêu dùng bình quân khoảng 4%; Tổng vốn đầu tư phát triển toàn xã hội khoảng 31,5% GDP; Tỷ suất tiêu hao năng lượng trên một đơn vị GDP giảm 1,5%; Tỷ lệ hộ nghèo theo chuẩn nghèo tiếp cận đa chiều giảm 1 - 1,5%, riêng các huyện nghèo giảm 4%.
Bên cạnh đó, tỷ lệ thất nghiệp ở khu vực thành thị phấn đấu dưới 4%; Tỷ lệ lao động qua đào tạo đạt 55 - 57; Số giường bệnh trên một vạn dân đạt 25,5 giường (không tính giường trạm y tế xã); Tỷ lệ dân số tham gia bảo hiểm y tế đạt 82,2%; Tỷ lệ khu công nghiệp, khu chế xuất đang hoạt động có hệ thống xử lý nước thải tập trung đạt tiêu chuẩn môi trường là 87%; Tỷ lệ che phủ rừng đạt 41,45%.
**Các giải pháp, nhiệm vụ chủ yếu cần tập trung thực hiện**
Để thực hiện các mục tiêu phát triển kinh tế - xã hội năm 2017, Quốc hội yêu cầu Chính phủ tập trung thực hiện các nhiệm vụ, giải pháp chủ yếu gồm:
*Thứ nhất,* thực hiện chính sách tiền tệ chủ động, linh hoạt, tiếp tục cơ cấu lại các tổ chức tín dụng; phát triển thị trường mua bán nợ, kiểm soát chặt chẽ, xử lý hiệu quả nợ xấu và các tổ chức tín dụng yếu kém theo nguyên tắc thị trường, bảo đảm an toàn hệ thống và quyền lợi người gửi tiền. Quản lý hiệu quả thị trường ngoại tệ, thị trường vàng, phấn đấu tăng dự trữ ngoại hối. Siết chặt kỷ luật tài chính - ngân sách nhà nước; bảo đảm chi ngân sách nhà nước tiết kiệm, hiệu quả và theo dự toán được Quốc hội thông qua. Kiểm soát chặt chẽ các chỉ tiêu nợ công và bội chi ngân sách nhà nước… *Thứ hai,* tiếp tục rà soát, sửa đổi, bổ sung các giải pháp tạo chuyển biến rõ nét về cải thiện môi trường đầu tư, kinh doanh, loại bỏ rào cản bất hợp lý. Đơn giản hóa thủ tục hành chính, ứng dụng công nghệ thông tin, tạo thuận lợi tối đa, giảm thời gian, chi phí giao dịch hành chính gia nhập thị trường của người dân và doanh nghiệp. Thu hẹp khoảng cách năng lực cạnh tranh quốc gia với 04 nước ASEAN phát triển nhất (ASEAN-4). Phát triển doanh nghiệp khoa học công nghệ, thu hút mạnh đầu tư của các tập đoàn đa quốc gia gắn với phát triển doanh nghiệp trong nước và công nghiệp phụ trợ.... *Thứ ba,* thực hiện có hiệu quả Kế hoạch tài chính và Kế hoạch đầu tư công trung hạn, nhằm thực hiện đột phá trong xây dựng kết cấu hạ tầng, góp phần thực hiện các mục tiêu phát triển kinh tế - xã hội 5 năm 2016-2020. Quan tâm bố trí vốn đầu tư công cho xóa đói, giảm nghèo, tạo việc làm, phát triển nông nghiệp, nông thôn, các vùng miền núi, vùng đồng bào dân tộc, vùng bị ảnh hưởng nặng nề của thiên tai, các địa phương chịu ảnh hưởng sự cố môi trường biển; các dự án, công trình y tế, giáo dục, các dự án phát triển hạ tầng trọng điểm tạo sức lan tỏa và kết nối phát triển… *Thứ tư,* đẩy mạnh cơ cấu lại nền kinh tế, trong đó tiếp tục tập trung vào 3 trọng tâm cũng như các nhiệm vụ ưu tiên và chương trình hành động theo Nghị quyết của Quốc hội về Kế hoạch cơ cấu lại nền kinh tế giai đoạn 2016-2020. Cơ cấu lại gắn với đổi mới mô hình tăng trưởng theo hướng ngày càng tăng năng suất lao động, chất lượng và sức cạnh tranh của nền kinh tế; kết hợp hợp lý giữa tăng trưởng theo chiều rộng và chiều sâu, trong đó lấy tăng trưởng theo chiều sâu là hướng chủ đạo; huy động, phân bổ và sử dụng hiệu quả các nguồn lực theo cơ chế thị trường.... *Thứ năm,* thực hiện hiệu quả chính sách giảm nghèo bền vững theo chuẩn nghèo đa chiều theo Nghị quyết số 76/2013/QH13 và các chương trình mục tiêu về an sinh xã hội; Chương trình mục tiêu quốc gia Xây dựng nông thôn mới, ưu tiên nguồn lực hỗ trợ cho các vùng khó khăn, vùng đồng bào dân tộc thiểu số; chú trọng huy động các nguồn lực phát triển nhà ở cho hộ gia đình người có công với cách mạng, nhà ở cho người lao động ở các khu công nghiệp, khu chế xuất. Tăng cường quản lý đất đai… Phát triển thị trường lao động, tập trung phát triển, nâng cao chất lượng, thực hiện phân luồng giáo dục nghề nghiệp. Đổi mới căn bản, toàn diện giáo dục - đào tạo, phát triển toàn diện năng lực, thể chất, nhân cách, đạo đức, lối sống cho học sinh, sinh viên. *Thứ sáu,* thực hiện hiệu quả các mục tiêu, cam kết quốc tế về ứng phó với biến đổi khí hậu và các giải pháp tổng thể phòng, chống hạn hán, xâm nhập mặn, ưu tiên những vùng bị ảnh hưởng nặng. Triển khai hiệu quả công tác bồi thường, hỗ trợ ổn định sản xuất, đời sống của Nhân dân sau sự cố ô nhiễm môi trường biển. Nâng cao năng lực dự báo, cảnh báo và chủ động phòng, chống, giảm nhẹ, khắc phục hậu quả thiên tai. *Thứ bảy,* xây dựng nền hành chính hiệu lực, hiệu quả, kỷ luật, kỷ cương, công khai, minh bạch. Nâng cao năng lực, kỷ luật, đạo đức và thái độ thực thi pháp luật, trách nhiệm của người đứng đầu cơ quan, tổ chức và trách nhiệm thi hành công vụ của cán bộ, công chức, viên chức; tăng cường thanh tra, kiểm tra công vụ; xử lý nghiêm các hành vi nhũng nhiễu, tiêu cực và cương quyết loại bỏ những người cản trở, trục lợi, gây khó khăn cho doanh nghiệp, người dân. *Thứ tám,* khắc phục những tồn tại, hạn chế, nâng cao hơn nữa chất lượng công tác điều tra, truy tố, xét xử, thi hành án, kiểm sát hoạt động tư pháp. Xử lý hiệu quả các vấn đề xã hội bức xúc; bảo đảm an ninh, trật tự, an toàn xã hội; *Thứ chín,* tiếp tục đưa quan hệ đối ngoại với các đối tác đi vào chiều sâu, thiết thực, hiệu quả. Đẩy mạnh các hoạt động đối ngoại Nhà nước và ngoại giao Nhân dân. Thực hiện có hiệu quả chủ trương của Đảng và Nhà nước về hội nhập quốc tế; các cam kết quốc tế và các hiệp định thương mại tự do đã ký.
Bên cạnh đó, các giải pháp khác mà Chính phủ các bộ, ngành cần thực hiện gồm: Nắm chắc diễn biến tình hình trong và ngoài nước, kết hợp chặt chẽ giữa quốc phòng, an ninh và đối ngoại để chủ động giải quyết mọi tình huống xảy ra, bảo vệ vững chắc độc lập, chủ quyền quốc gia; Tăng cường quản lý nhà nước về công tác báo chí, truyền thông. Chủ động cung cấp thông tin kịp thời, đúng đắn về tình hình kinh tế - xã hội, chủ trương của Đảng, chính sách, pháp luật của Nhà nước, những vấn đề dư luận xã hội quan tâm; Thực hiện Chính phủ điện tử, khai thác tốt trang thông tin điện tử của các cấp, ngành để cung cấp thông tin và thu thập ý kiến phản ánh của người dân và doanh nghiệp, làm căn cứ nghiên cứu, hoàn thiện cơ chế chính sách và điều hành của bộ máy quản lý nhà nước các cấp.
## Bình luậnÝ kiến của bạn sẽ được biên tập trước khi đăng. Xin vui lòng gõ tiếng Việt có dấu

Cache-Control: public, max-age=300

Set-Cookie: .ASPXANONYMOUS=_oXIKo2o0gEkAAAAM2Y4YzdhMGMtYTkyZC00MTFhLWExYTktYjIyMDczYTliODQy0; domain=tapchitaichinh.vn; expires=Wed, 29-Mar-2017 13:05:40 GMT; path=/; HttpOnly


markdown:
**Suy giảm trí nhớ là dấu hiệu đầu tiên và là biểu hiện quan trọng của sa sút trí tuệ. Việc phát hiện và điều trị các vấn đề về trí nhớ ngay từ những dấu hiệu đầu tiên giúp phòng tránh các hậu quả nghiêm trọng như teo não, lú lẫn, mất trí nhớ, thậm chí là tử vong… Vậy bệnh suy giảm trí nhớ là gì? Chúng ta cùng tìm hiểu bài viết dưới đây:** *Ảnh minh họa: Bệnh suy giảm trí nhớ ngày càng phổ biến ở giới trẻ*
**1, Bệnh suy giảm trí nhớ là gì?**
Suy giảm trí nhớ là hiện tượng kém dần của trí nhớ và nhận thức do sự thoái hóa không ngừng của não bộ. Bệnh diễn tiến âm thầm cho đến khi xuất hiện những biến chứng nặng nề như không nhận ra người thân trong nhà, vụng về, hay đi lạc, mất khả năng sinh hoạt hằng ngày và đặc biệt khiến người bệnh không thể làm chủ được cuộc sống.
**2, Triệu chứng của bệnh suy giảm trí nhớ?**
Khi thấy xuất hiện những biểu hiện của bệnh suy giảm trí nhớ dưới đây, chúng ta nên đến các trung tâm Y tế để được kiểm tra và điều trị kịp thời:
- Quên những đồ vật đã từng sử dụng rất thường xuyên và nhiều lần.
- Quên tên người quen, quên lịch làm việc và những công việc cần làm
- Gặp nhiều khó khăn khi tiếp nhận những thông tin mới.
- Thường xuyên lặp lại một câu hay một câu chuyện trong cùng một buổi trò chuyện.
- Gặp khó khăn trong việc chọn và giữ tiền.
- Tính toán sai và phản ứng chậm
- Khó khăn trong việc giữ nếp sinh hoạt hàng ngày.
**3, Bệnh suy giảm trí nhớ do đâu?**
Có rất nhiều
**, cụ thể là: nguyên nhân dẫn đến bệnh suy giảm trí nhớ**
- Tuổi tác
- Di chứng do chấn thương sọ não
- Mất ngủ, thiếu ngủ thường xuyên
- Cuộc sống căng thẳng, nhiều stress
- Mắc các bệnh tai biến mạch máu não, thiểu năng tuần hoàn não, u não, các bệnh thoái hóa thần kinh…
- Ăn uống không đủ chất, ăn nhiều các chất có hại cho não bộ.
- Lạm dụng rượu bia, các chất gây nghiện, kích thích.
**4, Điều trị bệnh suy giảm trí nhớ**
Theo các chuyên gia y tế, đa số các trường hợp suy giảm trí nhớ hoàn toàn có thể phát hiện và điều trị từ sớm. Tuy nhiên,
** là câu hỏi thắc mắc của hầu hết mọi người. Suy giảm trí nhớ có biểu hiện đa dạng, có thể liên quan đến bệnh hoặc do tâm lý. Vì vậy, việc điều trị suy giảm trí nhớ bao gồm nhiều khía cạnh như điều trị nguyên nhân thực thể, loại bỏ yếu tố nguy cơ, điều chỉnh các vấn đề tâm lý… Những đối tượng ở nhóm suy giảm trí nhớ do bệnh lý thường đối mặt với các vấn đề như: tác dụng phụ của thuốc, trầm cảm, rối loạn chuyển hóa, thiếu dinh dưỡng. Với những bệnh nhân bị suy giảm trí nhớ do bệnh lý thì cần được điều trị theo sự hướng dẫn của các bác sĩ chuyên khoa với các loại thuốc có hỗ trợ thần kinh (almitrine, piracetam, naftidrofuril…), thuốc ức chế men acetylcholinesterase làm quá trình nhớ dễ dàng hơn (donepezil, rivastigmine, tacrine, galantamine…). Còn ở nhóm suy giảm trí nhớ do tâm lý, người bệnh cần kết hợp với bác sĩ để tìm ra nguyên do và nhanh chóng giải quyết tình trạng bệnh. Với trường hợp này, bệnh nhân có khả năng hồi phục trí nhớ nếu được phát hiện sớm và điều trị kịp thời, đúng nguyên nhân. điều trị suy giảm trí nhớ như thế nào?**
**5, Phòng tránh bệnh suy giảm trí nhớ hiệu quả**
Để phòng tránh bệnh suy giảm trí nhớ, chúng ta nên thực hiện những phương pháp dưới đây, không chỉ ngăn ngừa bệnh suy giảm trí nhớ hiệu quả mà còn giúp bộ não khỏe mạnh, minh mẫn kể cả khi về già:
- Một trong những nguyên nhân gây suy giảm trí nhớ là hậu quả của việc ít vận động trí não, vì thế không nên trông chờ vào một thứ thuốc khôi phục trí nhớ mà phải biết vận động trí não một cách khoa học. Việc học tập tích cực, đặc biệt là học ngoại ngữ sẽ giúp đẩy lùi chứng suy giảm trí nhớ hiệu quả nhất. Ở những người thường xuyên học tập, vùng não chức năng này phải hoạt động liên tục và làm việc thường xuyên hơn, nhờ đó, nó thúc đẩy các nơron thần kinh não không ngừng truyền dẫn thông tin, giúp khu vực não chức năng không bị “ì” do lười vận động. Đồng thời, hạn chế được những điều kiện xấu dẫn tới quá trình suy giảm trí nhớ.
- Chế độ dinh dưỡng hợp lý, đa dạng, giàu chất sắt và các nguyên tố vi lượng cần thiết như phospho, kẽm, vitamin nhóm B…
- Tránh căng thẳng, stress, thường xuyên thư giãn, nghỉ ngơi, giữ tinh thần thoải mái, lạc quan, vui vẻ.
- Có nếp sống trật tự, ngăn nắp, phương pháp học tập, làm việc khoa học, có kế hoạch.
- Luyện tập thể dục thường xuyên. Đặc biệt tích cực các hoạt động xã hội để tinh thần được phục hồi và minh mẫn, lưu thông khí huyết tốt và làm giảm tình trạng suy giảm trí nhớ ở cơ thể.
- Ngủ đúng giờ, và đủ giấc giúp bộ não nhanh chóng được phục hồi và làm việc hiệu quả hơn.
- Thói quen hút thuốc cũng làm giảm khả năng nhận thức của chúng ta, bởi người không hút thuốc có khả năng tư duy sắc bén gấp hai lần so với người nghiện thuốc khi về già. Vì vậy, để phòng tránh bệnh suy giảm trí nhớ thì việc đầu tiên cần làm đó là từ bỏ những thói quen xấu có hại cho cơ thể.
Tóm lại, suy giảm trí nhớ là một căn bệnh nguy hiểm đang ngày càng phổ biến không chỉ ở người già mà còn xuất hiện rất nhiều ở giới trẻ. Vì vậy khi nhận thấy bản thân có bất kỳ dấu hiệu nào về suy giảm trí nhớ, chúng ta hãy đến gặp bác sĩ ngay để phát hiện kịp thời và có hướng điều trị bệnh suy giảm trí nhớ một cách hợp lý nhé!
## Phản hồi của khách hàng sau khi sử dụng Lohha Trí Não
![ DSC04171](http://teonao.vn/wp-content/uploads/2016/02/dsc041711.jpg)
![ DSC04171](http://teonao.vn/wp-content/uploads/2016/02/dsc041711.jpg)
[Cụ Năm](http://teonao.vn/cu-ba-75-tuoi-va-cau-chuyen-chua-teo-nao-1145)
75 tuổi ở Đồ Sơn, Hải Phòng. Cụ bị Teo não tuổi già đã gần 7 năm
![ x2](http://teonao.vn/wp-content/uploads/2016/04/x2.jpg)
![ x2](http://teonao.vn/wp-content/uploads/2016/04/x2.jpg)
[Cụ Điền](http://teonao.vn/kho-muon-neo-vi-chung-lan-tuoi-gia-2177/)
90 tuổi ở Bắc Từ Liêm, Hà Nội. Cụ bị Lẫn, sa sút trí tuệ tuổi già đã gần 20 năm
|
|
## Lohha Trí Não sản phẩm mới cho bệnh nhân Teo Não, Alzheimer, Lẫn
[chứa cây Thông Đất kết hợp cùng các thảo dược khác như Thành Ngạnh, Lá dâu… có tác dụng giúp nuôi dưỡng, bảo vệ, ngăn chặn teo và thoái hóa các tế bào thần kinh. Lohha Trí Não giúp hỗ trợ điều trị Teo Não, phòng ngừa teo não sau tai biến và chấn thương sọ não. - Hướng dẫn mua Lohha Trí Não:](http://teonao.vn/lohha-tri-nao-san-pham-moi-cho-benh-nhan-teo-nao-alzheimer-lan-908/) **Lohha Trí Não** **Xem tại đây**
Sản phẩm không phải là thuốc không có tác dụng thay thế thuốc chữa bệnh. Hiệu quả phụ thuộc vào cơ địa từng người
## Bình Luận Của Khách HàngCó 4 bình luận
Chào bác sĩ! Tôi tên là Tuyền, năm nay 30 tuổi. Hiện tôi đang mang thai tháng thứ 6 nhưng trí nhớ rất kém, tôi có thể uống Lohha Trí Não để cải thiện tình trạng này không, vì tôi vẫn đang làm việc, chưa được nghỉ thai sản, nếu cứ để tình trạng bệnh kéo dài thì rất ảnh hưởng đến công việc. Xin bác sĩ tư vấn giúp tôi! Tôi chân thành cám ơn.
Chào Minh Tuyền,
Giai đoạn mang thai rất nhạy cảm đặc biệt là 3 tháng đầu khi mang thai. Nếu không có bệnh cấp, nguy hiểm thì mình không nên dùng thuốc bạn nhé, dùng thuốc có thể sẽ ảnh hưởng rất nhiều đến khả năng phát triển bình thường của bé. Vì thế bạn chưa nên dùng Lohha trí não mà chỉ nên dùng lohha trí não để tăng cường khả năng ghi nhớ sau sinh. Bạn có thể gọi cho mình qua số 1800 1265 mình sẽ tư vấn trực tiếp cho bạn nhé.
Chúc bạn và gia đình sức khỏe!
Chào bác sĩ!
Dạo này em rất hay quên, đãng trí, như vậy có phải là suy giảm trí nhớ không? Em đang mang thai em bé được 5 tháng có ảnh hưởng gì đến bé không ạ?
Em xin cám ơn!
Chào bạn,
Giai đoạn mang thai rất nhạy cảm đặc biệt là 3 tháng đầu khi mang thai. Nếu không có bệnh cấp, nguy hiểm thì mình không nên dùng thuốc bạn nhé, dùng thuốc có thể sẽ ảnh hưởng rất nhiều đến khả năng phát triển bình thường của bé. Vì thế bạn chưa nên dùng Lohha trí não mà chỉ nên dùng lohha trí não để tăng cường khả năng ghi nhớ sau sinh. Bạn có thể gọi cho mình qua số 1800 1265 mình sẽ tư vấn trực tiếp cho bạn nhé.
Thân ái!

Server: nginx

Content-Type: text/html

X-Powered-By: EasyEngine 3.7.4

Accept-Ranges: bytes


markdown:
Hiệp hội người tiêu dung Pháp (UFC) này cho biết, họ buộc phải khởi kiện sau khi ba mạng xã hội Mỹ đã cố tình từ chối sửa đổi một số điều khoản được xem là bất lợi cho người sử dụng.
Thực tế những yêu cầu sửa đổi của hiệp hội đã được gửi tới Google, Facebook và Twitter từ tháng 6 năm 2013 nhưng không mang lại bất cứ kết quả nào.
UFC cho rằng, việc 3 gã khổng lồ Internet này tự cho mình quyền thu thập, sử dụng và đem bán dữ liệu khách hàng cho đối tác của mình là hành động không thể chấp nhận được và vi phạm pháp luật.
Trợ lý pháp lý cao cấp của UFC ngài Nicolas Godsroy thẳng thừng yêu cầu ba công ty Mỹ này phải thay đổi hợp đồng phù hợp với luật pháp của nước sở tại.
Không dừng lại ở đó, UFC còn kêu gọi các nước khác trong EU nên có những động thái mạnh hơn ngăn chặn các công ty không để họ “tự tung tự tác” khai thác dữ liệu của người sử dụng như hiện nay.
Google, Facebook và Twitter hiện chưa có bình luận gì về vấn đề này.
Thực tế thì đây không phải lần đầu tiên 3 công ty này bị dính kiện tựng. Hồi đầu tháng Giêng vừa rồi Google bị kết án phải trả 150,000 euro ( 207,000 USD) cho Ủy ban công nghệ thông tin Pháp vì đã vi phạm pháp luật trong chính sách bảo vệ dữ liệu.
Alain Bensoussan, luật sư chuyên về lĩnh vực quyền kỹ thuật số tại Pháp cho biết, cuộc chiến này có thể sẽ mất nhiều năm. Tuy nhiên, ông cho rằng đây là một hành động cần thiết khi nó thức tỉnh người sử dụng về quyền của họ trên không gian ảo.
© Bản quyền thuộc về Thời báo Tài chính Việt Nam
Cấm sao chép dưới mọi hình thức nếu không có sự chấp thuận bằng văn bản của Thời báo Tài chính Việt Nam.
Tổng biên tập: Phạm Văn Hoành
Phó Tổng biên tập: Đinh Hùng
Trưởng phòng Báo điện tử: Đậu Huy Sáu
Địa chỉ Tòa soạn: 34 Tuệ Tĩnh, Hà Nội - Điện thoại: 04.39431658 - Fax: 04.39431632 - Email: thoibaotaichinhvietnam@gmail.com
Giấy phép báo điện tử :160/GP-BTTTT
Đường dây nóng: 0965 199 586 - Liên hệ quảng cáo: 0965 182 586

Cache-Control: private, max-age=0

X-FRAME-OPTIONS: SAMEORIGIN

X-Content-Type-Options: nosniff

X-MS-InvokeApp: 1; RequireReadOnly


markdown:
Thông báo SPAM + POST bài sai chuyên mục = BAND nick vĩnh viễn mà không báo trước ! - Diễn đàn miễn phí hoàn toàn nên các thành viên chú ý đăng tải thông tin
Bài viết không có ảnh sẽ bị xóa
Tag: cảm cúm
Diễn đàn:Sự Phát Triển Của Bé
Diễn đàn:Bà Mẹ Mang Thai

Set-Cookie: bb_lastactivity=0; expires=Fri, 19-Jan-2018 01:47:45 GMT; path=/

Server: LiteSpeed

Cache-Control: private, post-check=0, pre-check=0, max-age=0


markdown:
Từ khoá:
* Số Hiệu, Tiêu đề hoặc Nội dung ngắn gọn*
|
|Số hiệu: |162-BCNNh-CBLĐ||
|Loại văn bản: |Chỉ thị|
|
|Nơi ban hành: |Bộ Công nghiệp nhẹ||
|Người ký: |Kha Vạn Cân|
|
|Ngày ban hành: |22/09/1964||
|Ngày hiệu lực:
|
|
54

Cache-Control: private

Set-Cookie: thukyluat.vn=; domain=thukyluat.vn; expires=Mon, 11-Oct-1999 17:00:00 GMT; path=/; HttpOnly